2015-10-01 3 views
-1

Я читаю в большом файле данных в char[] по одной строке за раз. Мне нужно суммировать несколько полей в char[].Преобразование секции C-строки в двойную

Скажи мне дали Инициализированный: char input[4270]; Я хочу, чтобы найти номер, и вот что я знаю:

  • Он начинается с индекса 1234
  • Это будет не больше 10 char с длиной
  • это будет иметь формат «567,89»
  • Если короче, чем 10 char s число будет выровнено по левому краю и пространство проложенного

После извлечения номера по этому индексу и другому индексу мне нужно преобразовать их сумму обратно в char[], чтобы я мог записать результат обратно в файл.

Как я могу совершить этот рейс туда и обратно?

+2

Итак, что вопрос? –

+0

Как я могу взять раздел массива символов и преобразовать его в двойное, а затем обратно? – lefeal

+1

@lefeal Преобразование текста в двойные значения? Это можно сделать, используя функцию ['stod()'] (http://en.cppreference.com/w/cpp/string/basic_string/stof). –

ответ

0

Вы можете конвертировать любые юридические double (независимо от длины) из char[] с помощью stod.

Например, сказать, что я дал вход:

char cstring[] = "blah 13.42 blah blah"; 

Если я знаю, индекс числа, я хочу, чтобы преобразовать (здесь 5) я могу использовать это следующим образом:

const double num = stod(cstring + 5); 

[Live Example]

Кстати, если индекс вы предоставите указывает на пробельных символов, предшествующих фактическое число stod будет по-прежнему Работа.

Чтобы вернуться к char[] и вы не возражаете результат, который будет печататься из формата printf «s %f, то я бы рекомендовал просто используя to_string и копирование. Например:

const string backToChars = to_string(num + 13.0); 

copy(backToChars.cbegin(), backToChars.cend(), cstring + 5); 

[Live Example]

Смежные вопросы