我使用std :: getline()從一個文本文件逐行讀取。但是,第一次調用getline就是讀取整個文件!我也試過明確地將分隔符指定爲'\ n'。任何想法,爲什麼這可能會發生?C++ getline讀取整個文件
我的代碼:
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線(我看它在記事本++ FWIW)。
編輯:我通過使用記事本++來將輸入文本文件中的行結尾轉換爲「Windows」行結尾來解決此問題。該文件在每行的末尾用'\ n'編寫,使用C++代碼。爲什麼getline()需要Windows行尾(\ r \ n)?這是否與字符寬度或Microsoft實現有關?
你能請張貼文件的前10行。 –
我很確定getline()默認爲''\ n''作爲分隔符。我不明白爲什麼回車會影響它。 – Rapptz
標準I/O庫函數讀取和寫入平臺的行結束符。針對Windows C或C++運行庫構建的程序因此期望Windows行結束(令人震驚!)。 – jamesdlin