输入多个字符后,我收到多次错误消息。例如:“1300412”。它似乎把输入带到循环,所以它一直显示“无效输入”。 如何修复它让它只在输入错误的输入后只显示一次“无效输入”。
这是我的代码,请帮助我。
void main(){
char option;
do{
system("cls");
cout << " Select Function: " << endl;
cout << "(a) Asset Depreciation." << endl;
cout << "(b) Printing Charge." << endl;
cout << "(c) Packaging Program." << endl;
cout << "(q) Exit." << endl << endl;
cout << "Please enter your option:";
cin >> option;
option = toupper(option);
if (option == 'A'){
Asset_Depreciation();
}
else if (option == 'B'){
Printing_Charge();
}
else if (option == 'C'){
Packaging_Program();
}
else if (option == 'Q'){
cout << "Thanks For Using" << endl;
system("pause");
}
else{
cout << "Invalid input!!! Please enter again." << endl;
cin.clear();
cin.ignore();
system("pause");
}
} while (option!='Q');
}
答案 0 :(得分:0)
代码
@customers = Customer.all
@customers = @customers.between(params['start'], params['end']) if (params['start'] && params['end'])
根本没用。根据参考文件: clear method和ignore method。
第一种方法是指流的内部状态。
第二种方法,在没有参数的情况下使用,只是忽略输入流中的一个字符。
我建议您以这种方式使用它:
cin.clear();
cin.ignore();
在开头包括限制标题:
cin.ignore(numeric_limits<streamsize>::max());
这样你就可以忽略并清除流中尚未读取的所有剩余字符。
答案 1 :(得分:0)
由于option
的类型为char
,因此它不能包含多个字符。这就是您收到错误消息的原因。
如果您想输入string
作为输入。
std::string var; // This will accept input this white space or \n occurred.
std::cin >> var;
如果您想输入一行string
std::string var;
getline(std::cin,var); // This will accept input until \n has not entered.
之后你所有的比较都会像这样
if (option == "A"){
Asset_Depreciation();
}