标题:[求助]关于cin.fail(),cin.clear(),cin.sync()的解释
只看楼主
kisscjy
Rank: 1
等 级:新手上路
帖 子:217
专家分:0
注 册:2007-4-9
 问题点数:0 回复次数:8 
[求助]关于cin.fail(),cin.clear(),cin.sync()的解释
如题,希望最好给个例子来看看~~
以及每个函数的功能与实现和他们的头文件~~~
搜索更多相关主题的帖子: cin sync clear fail 
2007-05-10 14:43
weishj
Rank: 1
等 级:新手上路
威 望:2
帖 子:141
专家分:0
注 册:2007-4-22
得分:0 

#include <iostream>
using namespace std;
void main()
{
int a;
cout<<"输入一个字母:"<<endl;
cin>>a; //int型变量中放了char型数据,failbit置1
cout<<"cin.fail()="<<cin.fail()<<endl; //输出1
cout<<"输入一个数字:"<<endl; //由于failbit值为1,输入流不能正常工作
cin>>a; //故此处的输入无效
cout<<a<<endl; //输出不确定值
cin.clear(); //此处用cin.clear()流标志复位
cout<<"cin.fail()="<<cin.fail()<<endl; //此处failbit已为0
cout<<"输入一个数字:"<<endl;
//但刚才输入的字符并没有从流中清除,所以cin>>a又把那个字符放入a中,流输入流又不能正常工作
cin>>a;
cout<<a<<endl; //输出不确定值
cout<<"cin.fail()="<<cin.fail()<<endl; //在此处failbit又为1
cin.clear(); //再次修复输入流
cin.ignore(); //取走刚才流中的字符
cout<<"输入一个数字:"<<endl; //再次接收用记输入,这次输入数字,正常输出了
cin>>a;
cout<<"a="<<a<<endl;
//现在再看一下输入流的failbit
cout<<"cin.fail()="<<cin.fail()<<endl;//输出0,表明输入流已恢复正常

}


If you shed tears when you miss the sun, you also miss the stars.
2007-05-10 17:25
weishj
Rank: 1
等 级:新手上路
威 望:2
帖 子:141
专家分:0
注 册:2007-4-22
得分:0 
sync()用法我也不太清楚,哪位高人帮下

If you shed tears when you miss the sun, you also miss the stars.
2007-05-10 17:32
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
sync() 清空输入缓冲区的作用。

和ignore()类似作用!

A protected virtual function that tries to synchronize the controlled streams with any associated external streams.

查查msdn吧!

Fight  to win  or  die...
2007-05-10 18:20
kisscjy
Rank: 1
等 级:新手上路
帖 子:217
专家分:0
注 册:2007-4-9
得分:0 
LS的~~
什么叫清空输入缓冲区~~~
什么又叫缓冲??
说清楚一点啊~~
我是菜鸟一只.....

谢谢了~~

每当我一晚写下70,80个程序时,你还真以为,这都是我一个人干的.....不过说真的,其实都是抄书的~~ ^@^
2007-05-10 21:32
kisscjy
Rank: 1
等 级:新手上路
帖 子:217
专家分:0
注 册:2007-4-9
得分:0 
我想再问一个问题~
根据二楼的源代码,程序是可以正常运行
可当我把头文件
#include<iostream>
using namespace std;
改为
#include<iostream.h>
时,程序就会一直循环下去~~
请问这是为什么?????

每当我一晚写下70,80个程序时,你还真以为,这都是我一个人干的.....不过说真的,其实都是抄书的~~ ^@^
2007-05-10 22:40
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
为什么要改呢?难得楼主觉得用.h更好?

Fight  to win  or  die...
2007-05-11 09:09
kisscjy
Rank: 1
等 级:新手上路
帖 子:217
专家分:0
注 册:2007-4-9
得分:0 
我只是想知道为什么.h文件用不了cin.fail(),cin.clear()而已

想有点求知精神而已~~

每当我一晚写下70,80个程序时,你还真以为,这都是我一个人干的.....不过说真的,其实都是抄书的~~ ^@^
2007-05-11 12:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-138241-1-1.html




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

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