gpt4 book ai didi

c++ - 最后一个空行和 ifstream::operator>> (C++)

转载 作者:搜寻专家 更新时间:2023-10-31 01:47:09 26 4
gpt4 key购买 nike

我对以下代码中的 ifstream::operator>> 行为有疑问:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main () {
ifstream inFile("test.txt");
string buffer;
while (!inFile.eof()) {
inFile >> buffer;
cout << buffer << endl;
}
return 0;
}

如果 test.txt 的最后一行不为空,则此代码运行良好,例如:

One two
Three four
Five six

但是如果 test.txt 是这样写的:

One two
Three four
Five six
(empty line)

cout 将显示两个“六”字串。它是与 Windows 的\r\n 或类似问题有关的问题吗?我使用 Microsoft VC++ 2010。

提前致谢。

最佳答案

使用 stream.eof() 循环控制我们通常是错误的:你总是想要检查结果after阅读:

while (inFile >> buffer) {
...
}

格式化读取将从跳过前导空格开始。之后,字符串提取器将读取非空白字符。如果没有这样的字符,则提取失败并且流转换为 false

关于c++ - 最后一个空行和 ifstream::operator>> (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19636503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com