cin流和它的缓冲区的问题
这几天研究cin对象,发现了许多忽略的小问题:
char ch='9';
int n;
cout.setf(ios_base::boolalpha);
while(cin>>ch)
{
//n=cin.tellg();
//cout<<"n="<<n<<"\t";
cout<<"ch="<<ch<<"\tcin.eof="<<cin.eof()<<endl;
}
测试1:保留代码中的注释,运行程序输入abcd并回车,程序结果和我预期的一样是:
ch=a cin.eof=false
ch=b cin.eof=false
ch=c cin.eof=false
ch=d cin.eof=false
测试2:放开注释,运行程序输入abcd并回车,程序结果是:
n=-1 ch=a cin.eof=false
问题1:对于测试2的结果不能理解,能否帮忙解释下?
问题2:程序运行到cin>>ch要求用户输入,输入完abcd按回车后,输入流缓冲区中一共有多少个字符?最后一个字符是EOF还是'\n',能否给出代码证明?
问题3:如果缓冲区中有EOF,cin流到底读不读EOF?是一旦读到EOF置eof标志,还是当读到EOF下一个字符时置eof标志?最好能给出代码证明.