注册 登录
编程论坛 C++教室

c++循环的 小 问题

yh19880108 发布于 2010-03-23 12:37, 572 次点击
最近 学 的时候 遇见  一个小 问题 请大家 看看
while(!(cin>>golf[i]){
   cin.clear();
   while(cin.get()!="\n")
      contiune;
   cout<<...........
}
我想 问 一下 大家   这 里的 cin.clear()有 什么 作用啊
这里 没有 用eof啊  
 为什么 会出现 这 个  东西  书上不是  说他  是 开时 重新读取 输入 吗?
还有这里的 !(cin>>golf[i])是什么 意思  ?????
  请 高手 们  给与 解答 谢谢
2 回复
#2
hahayezhe2010-03-23 13:36
首先你没有说明 golf[i] 是个什么类型的数组 姑且为整型
那么while (!(cin >> golf[i])) 判断输入的是真还是假
如果输入的类型与定义的相同则跳过
反之则进入while循环
cin.clear();检举将一个出错的流的状态恢复为“好”。但也不完全是,因为它也可以把“好”的流变成“坏”。

对于什么是流,请看C++书的最后一章 基础教材有会有介绍
cin.clear()
清除cin流,并设置goodbit状态位。其参数是默认所以不必写出,
while(cin.get()!="\n")
这个是判断清除是否完毕  比如你输入一连串的字符
如未清理完则继续


总体的意思是你只能按golf数组的类型输入 否则就一直输出cout<<...........提醒你出错
#3
胡马平2010-03-23 18:20
楼上说得对啊!
1