关于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++输入输出的工作原理~
展开
3个回答
展开全部
标准库iostream已经将 cin 与 cout 关联起来的了。使用cin每次读取数据,与cin关联的(cout)缓冲区将会刷新。LZ可以使用istream创建一个函数该函数带有一个istream引用形参,返回istream&类型,然后使其与所关联的输出流关联起来,使用tie成员函数,
in.tie(&out); //将in输入流与out输入流关联起来。
in.tie(&out); //将in输入流与out输入流关联起来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我猜得是endl的问题,cout流插入一个endl时,会自动刷新流。去掉endl试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
cin.eof()是用在你打开文件时,检测是否文件读取完毕,而不是用在键盘输入的,在你这例子里,cin.eof()永远是返回0
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询