2016-05-27 2 views
0

Я пытаюсь получить данные из CSV-файла с помощью getline, но это не останавливается на новом символе строки. Код:getline() переносит ' n' из csv

while (file.good()) { 
     getline(file, value, ','); 
} 

Мой .csv в следующем формате:

123 456 
789 000 

При получении данных из второго столбца, GetLine возвращает 456\n789. Как это исправить?

+5

Вы сказали ему вместо запятой. – chris

+1

Это не проблема, но не используйте 'good()' для проверки конца ввода. Измените цикл на 'while (getline (файл, значение, ',')) {...}'. Таким образом, тело цикла не будет выполняться, когда чтение завершится неудачно в конце файла. –

+1

Простое решение - разобрать дважды. Используйте 'while (getline (файл, строка))' для получения строк. Внутри тела 'while' напишите строку в строковый поток и используйте' while (getline (поток, значение, ',')) ', чтобы получить результирующие значения в строке. – user4581301

ответ

1

Используйте std::getline() без разделителей, чтобы читать по одной строке за раз из вашего файла.

Затем, возьмите std::string, построить std::istringstream, а затем использовать std::getline(), с «» разделителем, чтобы прочитать отдельные запятую поля.

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