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;
第一次写博客,写的不好的地方请见谅。