| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:各位版主哇,又是输入输出流!
只看楼主 加入收藏
Huycwork
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2009-7-17
结帖率:50%
收藏
 问题点数:0 回复次数:0 
各位版主哇,又是输入输出流!
不知各位版主可曾看过《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流为什么直接被标记了错误状态呢?
搜索更多相关主题的帖子: 版主 输出 输入 
2009-08-01 17:26
快速回复:各位版主哇,又是输入输出流!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024042 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved