c++文件讀取,多一行的解決方法

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;

第一次寫博客,寫的不好的地方請見諒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章