istream& Read(istream &is)
{
std::string buf;
while (is >> buf)
{
cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
cout << is.rdstate() << endl;
cout << buf << endl;
}
cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
cout << is.rdstate() << endl;
is.clear();
cout << is.eofbit << " " << is.failbit << " " << is.badbit << endl;
cout << is.rdstate() << endl;
return is;
}
如果我输入普通字符如 "test",输出是 1 2 4 0
。
然后我按下 CTRL+Z (Windows),输出是 1 2 4 3
1 2 4 0
。
问题:
1. rdstate()
的返回值有什么意义?(为什么输出是 3,而不是 2?不是 1?)
- 为什么在我按下 CTRL+Z 后,
is.eofbit
和is.failbit
没有改变?(正如《C++ Primer 第五版》所说,到达文件末尾会同时设置 eofbit 和 failbit)
std::istream in(0); Read(in);
,那么cout << is.rdstate() << endl;
的输出是3。这是否意味着更改了三个标志(将3看作十进制)还是更改了两个标志(将3看作二进制(11))?(附言:我的英语很差,你能理解我想说什么吗?) - Ocxs