为什么循环不在C++;? 我有一个C++程序,要求用户输入命令行。如果输入有效(即0到100之间的数字),将调用一个开关,根据用户的分数打印出一些内容,然后程序将成功退出
如果用户输入的数字不是有效的等级,程序将成功地返回并请求有效的输入,直到用户输入适当的等级 但是,如果用户输入一个根本不是数字的字符串,例如“否”,循环将无限地请求一个有效的分数,而不会停止输入,最终导致命令行崩溃 完整的程序:为什么循环不在C++;? 我有一个C++程序,要求用户输入命令行。如果输入有效(即0到100之间的数字),将调用一个开关,根据用户的分数打印出一些内容,然后程序将成功退出,c++,while-loop,cin,C++,While Loop,Cin,如果用户输入的数字不是有效的等级,程序将成功地返回并请求有效的输入,直到用户输入适当的等级 但是,如果用户输入一个根本不是数字的字符串,例如“否”,循环将无限地请求一个有效的分数,而不会停止输入,最终导致命令行崩溃 完整的程序: #include <iostream> #include <string> #include <sstream> using namespace std; int main(int argc, char** argv) { cou
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(int argc, char** argv) {
cout << "\nEnter your grade: ";
int grade;
// Infinite input loop.
while(true) {
// Is the String a valid grade?
if(cin >> grade && grade >= 0 && grade <= 100) {
switch(grade / 10) {
case 10:
case 9:
cout << "A is for \"Awesome\"!";
break;
case 8:
cout << "B is okay.";
break;
case 7:
cout << "C isn't okay.";
break;
case 6:
cout << "Bad luck.";
break;
case 5:
case 4:
case 3:
case 2:
case 1:
cout << "Ouch!";
break;
}
cout << "\n\n";
break;
} else {
cout << "Please enter a valid grade: ";
}
}
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv){
cout>grade&&grade>=0&&grade这是因为流进入失败状态。当在流中设置失败位时,所有操作都将失败。您需要在流上调用clear()
,以清除错误标志,然后需要删除流中可能仍然存在的任何额外输入。您可以使用
cin.clear(); // clear error flags
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cin.clear();//清除错误标志
cin.ignore(std::numeric_limits::max(),'\n');
您需要为此添加
标题