以下内容分别在VC6.0 和 g++ 4.7下测试:
输入流在遇到文件结束符时会设置其eofbit,但此时在两个编译器上直接测试流得到的结果都为真,同时eof()也为真,举例如下:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
istringstream istr("loveyou");
string test;
istr >> test; //这里遇到了EOF
if(istr.eof())
cout << "eofbit is set" << endl;
if(istr)
cout << "istr is valid" << endl;
//istr.seekg(0, istringstream::beg);
//istr.tellp();
if(istr.good())
cout << "the stream can still be used" << endl;
return 0;
}
两个编译器上运行的结果都是:
eofbit is set
istr is valid
也就是说虽然if(istr)为真,但是这时候已经不能在用istr流来输入了&#x