cin输入错误时导致failbit为1时的缓冲区分析。
2016-01-06 10:04
716 查看
//当cin尝试将输入的字符读为int型数据失败后,会产生一个错误状态 //会把cin的failbit设定为1,所以会出现cin错误。所以must i? //依然会留在缓冲区中(由此我们可以做一个假定当输入触发cin中的failbit //为1时,数据仍然留在缓冲区中并没有被丢弃) //要使程序能够继续正常工作需要用clear清除failbit状态 #include <iostream> using namespace std; const int Max = 5; int main() { //using namespace std; //get data int golf[Max]; cout<< "Please enter your golf scores.\n"; cout << "you must enter " << Max << " round.\n"; int i; for (i = 0; i < Max; i++) { cout << "round # " << i + 1 << ": "; while (!(cin>> golf[i])) { cin.clear(); char ch; while ((ch=cin.get()) != '\n') { cout << ch << "Look!\n"; continue; } cout << "Please enter a number: "; } } double total = 0.0; for (i = 0; i < Max; i++) total += golf[i]; cout << total / Max << " = average score " << Max << " rounds\n"; return 0; }
相关文章推荐
- c++ 基础知识浅谈之四---时钟,循环,cin文件结束符有关
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- C++使用string.getline()和cin混合输入的问题(cin清空缓存)
- C++使用string.getline()和cin混合输入的问题(cin清空缓存)
- cin对象支持的3种模式的单字符输入
- C++输入流和输出流心得
- Qt中使用cout, cin, cerr
- C++中cin和cin.getline函数连用的问题
- C++---if(!cin)与if(!(cin >> xxx))
- cin,cout与scanf,printf 差别
- 走入C++程序世界-------第一个C++程序
- c++中的各种输入操作符 cin,cin.get(),cin.getline()等函数用法总结
- while(cin>>word)循环的退出方法
- 保证cin输入合法
- 对于cin提取输入流遇到空格的问题
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- cin、cin.get()、getline()(讲解的很详细)
- cin深入分析(上) - cin输入操作处理(转)
- cin深入分析(下) - cin的错误处理(转)
- 浅谈cin>>与cin.getline读取缓冲区中的‘\n’和空格的区别