Потоки C ++ не читают пустую строку - PullRequest
1 голос
/ 05 января 2010

Я пытаюсь написать функцию, которая читает отдельные строки из текстового файла и сохраняет их в строковом массиве. Функция работает правильно, за исключением случаев, когда она читается в пустых строках. Пример:

Функция

ifstream flinput( "somefile.txt" )
string line;

while( getline(flinput, line) ) {
  //Add line to array

Так что проблема в том, если текстовый файл выглядит так.

Line1 Some Text blar blar blar
\n
Line3 Some Text blar blar blar
\n
Line5 Some Text blar blar blar

Массив выглядит так.

array[0] = "Line1 Some Text blar blar blar"
array[1] = "Line3 Some Text blar blar blar"
array[2] = "Line5 Some Text blar blar blar"

Когда это должно выглядеть так.

array[0] = "Line1 Some Text blar blar blar"
array[1] = ""
array[2] = "Line3 Some Text blar blar blar"
array[3] = ""
array[4] = "Line5 Some Text blar blar blar"

Что я делаю не так?

Спасибо

Ответы [ 3 ]

3 голосов
/ 05 января 2010

Из документации getline ...

Если разделитель найден, он извлекается и отбрасывается, то есть не сохраняется, и после него начинается следующая операция ввода. Если вы не хотите, чтобы этот символ был извлечен, вместо этого вы можете использовать member get.

Итак, ваш код делает именно то, что должен. Вам нужно будет вручную разобрать вещи с помощью Get, как предлагается в документации, если вы хотите сохранить \ n.

0 голосов
/ 05 января 2010

Было бы проще использовать итератор, вот пример:

0 голосов
/ 05 января 2010

Ваш код работает для меня с gcc 4.3.2 в системе Linux. Я думаю, что должно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...