非法输入咋处理。
我用Switch case语句时,int i;
InitFishC();// 初始化数据。
while (1)
{
std::cout << "请选择需要进行的操作: \n";
std::cout << "1. 打印数据到屏幕\n";
std::cout << "2. 录入数据\n";
std::cout << "3. 退出程序\n";
std::cin >> i;
switch (i)
{
case 1:
if (ReadFishC())
std::cout << "成功读取文件^_^\n\n";
else
std::cout << "读取文件失败T_T\n\n";
break;
case 2:
RecordFishC();
break;
case 3:
return 0;
}
}像这种。如果我输入的i= n之类的那些英文字母,它就会死循环。请问怎么才能将非法输入筛选掉。求助大神 #include <iostream>
#include <limits>
int get_integer() {
int result;
while(1) {
if(std::cin >> result) break;
std::cout << "输入错误,请重新输入!" << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
return result;
}
int main() {
std::cout << get_integer() << std::endl;
return 0;
}
if(isdigit(i) && i < 4){ // 最外层附加条件
switch (i){
case 1:
if (ReadFishC())
std::cout << "成功读取文件^_^\n\n";
else
std::cout << "读取文件失败T_T\n\n";
break;
case 2:
RecordFishC();
break;
case 3:
return 0;
}
} 记得 include <cctype>
页:
[1]