| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1232 人关注过本帖
标题:如何清除cin缓冲?
只看楼主 加入收藏
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
 问题点数:0 回复次数:4 
如何清除cin缓冲?
再请教一个问题,如程序:
#include <iostream>
using namespace std;

1。int main()
2。{
3。 int a = 0;
4。 cin >> a;
5。 if ((a > 10) || (a < 1))
6。 {
7。 cout << "
8。 cin >> a;
9。 }

10。 return 1;
11。}
在这个程序中,如果输入的是字符或字符串,程序将连续地输出:
Invalid number!而进入死循环,请问有什么解决方法吗?
经调试,发现如果输入的是字符或字符串, a的值仍是上一次的数值结果,cin缓冲始终不为空,于是出现死循环,请问如何清除cin缓冲?
在VC.net中可以用 cin.rdbuf->pubsetbuf();来清除,而VC6.0没有这个函数。。。。
:)
搜索更多相关主题的帖子: cin 缓冲 字符 int 
2006-02-28 15:52
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
sync() 刷新缓冲区。
或者flush()

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-28 16:23
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 

用了cin.sync();还是不行。
在cin对象里找不着flush();请问flush()函数怎么调用?
柳儿:
我用以下代码解决了:
再请教一个问题,如程序:
#include <iostream>
using namespace std;

int main()
{
int a = 0;
cin >> a;
if ((a > 10) || (a < 1))
{
cout << "Invalid number";
cin.clear;
while (!isspace(cin.get()))
;
cin >> a;
}

return 1;
}

谢谢!!


谷底深深行 ,峰顶漫漫步......@_@
2006-02-28 16:57
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
flush()是ostream里的。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2006-02-28 17:08
olivezhang
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-9-14
收藏
得分:0 
明白!谢谢柳儿的支持!

谷底深深行 ,峰顶漫漫步......@_@
2006-02-28 20:51
快速回复:如何清除cin缓冲?
数据加载中...
 
   



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

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