代码如下,请问这段:
cin.clear();
while (cin.get() != '\n')
continue;
是啥意思,为什么输入错误程序就中止了呢?while循环里的语句是啥意思呢?cin.clear 是啥意思?
int fill_array(double ar[], int limit) {
double temp;
int i;
for (i = 0; i < limit; i++) {
cout << "Enter value#" << (i + 1) << ":";
cin >> temp;
if (!cin) {
cin.clear();
while (cin.get() != '\n')
continue;
cout << "Bad input;input process terminated.\n";
break;
}
else if (temp < 0)
break;
ar[i] = temp;
}
return i;
}
cin是输入流
语法如下:
cin.clear(标识符);
标识符号为:
goodbit 无错误
Eofbit 已到达文件尾
failbit 非致命的输入/输出错误,可挽回
badbit 致命的输入/输出错误,无法挽回
若在输入输出类里.需要加ios::标识符号
通过cin.clear,我们能确认它的内部标识符,如果输入错误则能重新输入.
cin.get()获取控制台输入的一个字符
cin.get()!='\n' 如果不是\n继续 continue
cin.clear()默认参数为0,即无错误,正常操作.当我们输入英文字母'k'时,它的状态标识改为fail,即错误,用cout对用户输出信息,再用cin.clear让错误标识改回为0,让我们可以继续输入,再清空流数据继续输入.如果我们没有了cin.clear,则会进入死循环,其过程为我们输入了英文字母,它的状态标识便为fail,当运行到条件判断时,便总是回到错误的条件表示里,并且我们再也没办法输入,因为错误的表示关闭了cin,所以会进入死循环.
可以参见cin.clear();的用法
建议你还是认真学一下C/C++语法基础再搞下去吧,你这段代码真的.... 不可描述
cin.get()!='\n' 如果不是按下回车就继续