各位版主哇,又是输入输出流!
不知各位版主可曾看过《C++编程思想》,里面的输入输出技术弄得我好生烦躁啊!我今天测试了如下代码:int main()
{
string line;
cout<<"press some char to buf with unclear"; //原意是想测试endl和flush这两个操纵算子看看“刷新流”的意思是清空缓冲区还是仅仅刷新屏幕输出
cin.get(*cout.rdbuf());
/*
这行是我对书上的内容的误解,我原本以为这个get函数会将参数指示的块插入到cin流的缓冲区
但是实际上get的作用是将cin的提取对象连接到cout的缓冲区了。
我之所以解释一下是想让各位好理解我测试的三段代码,要不更乱了
*/
cin>>line; //使用了调试器,所以只定义了一个变量
/*从调试器的行为来看,从这行代码开始,cin就被标记了某种错误状态,因此,后面的cin完全失去了作用*/
cout<<"press some char to buf with endl"<<endl;
cin.get(*cout.rdbuf());
cin>>line;
cout<<"press some char to buf with flush"<<flush;
cin.get(*cout.rdbuf());
cin>>line;
return 0;
}
输出是这样的:
press some char to buf with unclearget //这里会提示输入,粗体就是输入的内容
getclear //此时line被设置成了clear
press some char to buf with endl
press some char to buf with flush
我认为这样的输出时由于第二行哪里绑定标准输入和标准输出,因此,输入的内容被直接输出,再然后就跟上了cin>>line的代码将line设置成了clear,但是后面的cin流为什么直接被标记了错误状态呢?