关于c++ io标准输入输出流的问题~

#include<iostream>#include<map>#include<list>#include<string>... #include<iostream>#include<map>#include<list>#include<string>using namespace std;int main(){int i,a;while(!cin.eof()){cout<<"输入i:"<<endl; cin>>i;cout<<"i输入完毕:"<<endl; cout<<"输入a:"<<endl; cin>>a; cout<<"a输入完毕:"<<endl;if(cin.bad()||cin.fail()){fflush(stdin);cout<<"流状态已刷新^"<<endl;cin.clear();continue;}}cout<<i<<a<<endl;}关于这个输入输出流的问题我是越弄越迷糊了,我在while条件里设置的条件是文件结束的时候结束while循环,如果是其他错误的时候就刷新输入流 (使用fflush(stdin)函数刷新输入流,不知道对不对) 然后重新输入,但是为什么,当我输入文件结束符的时候它也刷新缓冲区呢?晕了,谁能给我讲讲c++输入输出的工作原理~ 展开
 我来答
King920406
2012-02-16 · TA获得超过594个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:84.8万
展开全部
标准库iostream已经将 cin 与 cout 关联起来的了。使用cin每次读取数据,与cin关联的(cout)缓冲区将会刷新。LZ可以使用istream创建一个函数该函数带有一个istream引用形参,返回istream&类型,然后使其与所关联的输出流关联起来,使用tie成员函数,
in.tie(&out); //将in输入流与out输入流关联起来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
testingrookie
2012-02-14 · 超过24用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:53.1万
展开全部
我猜得是endl的问题,cout流插入一个endl时,会自动刷新流。去掉endl试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
foong_79
2012-02-14 · TA获得超过731个赞
知道小有建树答主
回答量:424
采纳率:100%
帮助的人:483万
展开全部
cin.eof()是用在你打开文件时,检测是否文件读取完毕,而不是用在键盘输入的,在你这例子里,cin.eof()永远是返回0
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式