Я использую std::getline() для чтения из текстового файла построчно. Однако первый вызов getline — это чтение всего файла! Я также пытался явно указать разделитель как '\n'. Любые идеи, почему это может происходить?
Мой код:
std::ifstream serialIn;
...
serialIn.open(argv[3]);
...
std::string tmpStr;
std::getline(serialIn, tmpStr, '\n');
// All 570 lines in the file is in tmpStr!
...
std::string serialLine;
std::getline(serialIn, serialLine);
// serialLine == "" here
Я использую Visual Studio 2008. Текстовый файл имеет 570 строк (я просматриваю его в Notepad++).
Редактировать: я решил эту проблему, используя Notepad++, чтобы преобразовать окончания строк в моем входном текстовом файле в окончания строк «Windows». Файл был написан с '\n' в конце каждой строки с использованием кода C++. Почему getline() требует окончания строки Windows (\r\n)?? Это связано с шириной символа или реализацией Microsoft?
'\n'
в качестве разделителя. Я не понимаю, почему возврат каретки повлияет на это. - person Rapptz   schedule 28.08.2012