【发布时间】:2016-08-08 08:50:33
【问题描述】:
作为一名初级程序员,我试图理解我书中的所有内容,但在理解我为查看其行为而编写的这段代码时遇到了一些问题。
假设我想将数据读入一个字符串,清理这些数据,然后将“清理”的数据放入一个 istringstream 中,以便我可以再次读取它:
string line;
getline(cin, line);
// clean up data....
istringstream ss(line);
vector<string> vs;
for (string word; ss >> word; )
vs.push_back(word);
现在,通过编写这段代码,我想起了我书中的一句话:
如果您尝试读取超出 istringstream 字符串末尾的内容,它将进入 eof() 状态。
所以我尝试用两个if 条件测试for loop 之后的流,我发现它同时处于eof() 状态 和fail() 状态。流是否有可能同时处于这两种状态?为什么我会得到这个结果?输入操作后如何正确找到流的真实状态?我刚刚开始学习 I/O 流,但遇到了一些问题。谢谢你的帮助
【问题讨论】:
标签: c++ input error-handling