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 の実装と関係がありますか?