C++讀取文件時會多讀一行的問題
今天在寫cocos2d-x項目,用c++的原生讀取文件時,發現在讀取文件時會莫名的多一行,於是去研究了一下。
文件內容:
123
123
最後一個空行並不是特意打上去的,是因爲文本後面有空行是一種很正常的現象。因爲輸出當文檔時因爲結束符的存在,導致每一行都會有一個結束符的存在,所以必然導致最後一行有一個空行。
最開始的代碼是這樣的:
char buffer[256];
fstream outFile;
string str;
outFile.open(filePath, ios::in);
while (!outFile.eof())
{
cout << buffer << endl;
}
outFile.close();
cout << "-----------------"<< endl;
輸出結果
123
123
-----------------
出現這種情況,我們可以先預讀取下一個字符,當發現下一個字符也是換行符時就表示文本已經讀取結束了。
最後修改後的代碼:
char buffer[256];
fstream outFile;
string str;
outFile.open(filePath, ios::in);
while (!outFile.eof() && outFile.peek() != EOF)
{
cout << buffer << endl;
}
outFile.close();
cout << "-----------------"<< endl;
第一次寫博客,寫的不好的地方請見諒。