荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: MiYear (MiYear), 信区: Program
标 题: Re: 请问C++中的刷新输入缓冲区的函数
发信站: 荔园晨风BBS站 (Wed Sep 21 11:49:15 2005) , 站内信件
改为如下:
do
{
cout << "Please enter your request: ";
cin >> request;
cin.clear( );
cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' ); //事先
要在头文件中添加#include <limits>
}
while ( request < 1 || request > 4 );
另外,fflush这个函数的功能,与编译器关系密切,从提高移植性考虑,最好不要用fflush
这个函数,虽然你一直用它没有出现过问题。
【 在 Dtan 的大作中提到: 】
: 不好意思,犯了一个严重错误,while中应用 逻辑或,而不应该用 逻辑与(如果用逻?..
: 的话,逻辑表达式的值永远是假,所以无论输入什么值都会结束while循环),更正如?..
: do {
: cout << "Please enter your request: ";
: cin >> request;
: //这里应该调用什么函数才能达到上面一样的效果呢?
: } while ( request < 1 || request > 4 );
: 加上输出语句是为了让死循环的效果更明显。
: 还有cin.clear()只是设置goodbit,即设置状态位,并不会刷新输入缓冲区。下面是库..
: 数的一段代码
: void clear(iostate _St = goodbit, bool _Ex = false)
: {ios_base::clear(_Sb == 0 ? (int)_St | (int)badbit : (int)_St, _Ex); }
: 当期望输入一个整数而实际上却输入了一个字符时,goodbit会赋值为0,badbit赋值为..
: 运行时_Sb!=0,所以这样调用 ios_base::clear(4, false); 而ios_base::clear 函数?..
: 道在 VC6.0 库函数里是如何实现的,但从效果来看,即使在上面代码的cin>>request;..
: 句后加上cin.clear();也是会出现死循环,所以我觉得ios_base::clear 中并没有刷新..
: 入缓冲区。
: 结果是,在注释那里应该调用什么函数呢?
: 【 在 bakey (一日不见,如隔生抽) 的大作中提到: 】
: : 怎么我输入好像没有死循环呢....
: (以下引言省略...)
--
※ 来源:.荔园晨风BBS站 http://bbs.szu.edu.cn [FROM: 219.133.51.254]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店