我正在使用 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++ fwiw 中查看它)。
编辑:我通过使用 Notepad++ 将输入文本文件中的行尾转换为“Windows”行尾来解决这个问题。该文件是使用 c++ 代码在每行末尾使用 '\n' 编写的。为什么 getline() 需要 Windows 行尾 (\r\n)?这是否与字符宽度或 Microsoft 实现有关?