关于cin的问题

Joker____ 2012-03-17 10:43:21

unsigned int num = 0;
cout <<"Input a Num : ";
while(!(cin >> num)){
cout << num << endl;
cin.clear();
}


为啥当输入的不是数字 比如'f'的时候 它就无限循环了。。。
不会重新执行while里面的条件么。。。

...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨语澄江 2012-03-18
  • 打赏
  • 举报
回复
cin会智能识别数字和非数字,你定义的是num是整型,所以cin只识别数字,并返回true。输入非数字都返回false,所以输出num的初始值0,至于为什么会无限输出,我也不懂。我也是来学习的
Joker____ 2012-03-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pathuang68 的回复:]

引用楼主 joker____ 的回复:
C/C++ code

unsigned int num = 0;
cout <<"Input a Num : ";
while(!(cin >> num)){
cout << num << endl;
cin.clear();
}



为啥当输入的不是数字 比如'f'的时候 它就无限循环了。。。
不会重新执行while里面…………
[/Quote]

嗯 我后面自己查资料查到了。。。但是这个SYNC的具体作用是什么呢?一次清空所有缓冲区的东西么?那干嘛弄个同步的名字呢
Arnis1973 2012-03-18
  • 打赏
  • 举报
回复
好像清空语句没起作用啊
zaixiankaifa 2012-03-18
  • 打赏
  • 举报
回复
lz已经为输入设置了限定条件了
pathuang68 2012-03-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 joker____ 的回复:]
C/C++ code

unsigned int num = 0;
cout <<"Input a Num : ";
while(!(cin >> num)){
cout << num << endl;
cin.clear();
}



为啥当输入的不是数字 比如'f'的时候 它就无限循环了。。。
不会重新执行while里面……
[/Quote]


#include <iostream>
using namespace std;

int main(int argc, char** argv)
{
unsigned int num = 0;
cout <<"Input a Num : ";
while(!(cin >> num))
{
cout << num << endl;
cin.sync(); // 加上这行就OK了
cin.clear();
}

return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧