c++在没有tryCatch块的情况下捕获错误输入
c++ catch false input without tryCatch block
我试图在没有tryCatch块的情况下捕获错误的输入。每当用户键入错误的值(例如"hh"或-5)时,我的程序将再次询问,直到用户键入正确的值。然后继续,直到数组满为止。
int main() {
double array[6];
string str_array[7];
str_array[0] = "stringA";
str_array[1] = "stringB";
str_array[2] = "stringC";
str_array[3] = "StringD";
str_array[4] = "StringE";
str_array[5] = "StringF";
str_array[6] = "StringG";
double value;
for (int i = 0; i < 7; i++) {
bool exit = false;
while (!exit) {
cout << str_array[i] << ":";
if (cin >> value&& value> 0) {
array[i] = value;
cout << array[i] << endl;
exit = true;
} else {
cerr << "incorrect input" << endl;
cin.clear();
}
}
}
}
cin.clear();
还不够。您还需要使用被拒绝的输入来同步新的输入:
else {
cerr << "incorrect input" << endl;
cin.clear();
std::string dummy; // <<<<<
cin >> dummy; // <<<<<
}
否则,您将一遍又一遍地阅读被拒绝的输入。
像cin.ignore(numeric_limits<streamsize>::max(), 'n')
这样的东西也可能对你有用。
相关文章:
- 特定情况下的分段错误
- MSVC 在不知道类型的情况下评估上下文(和错误)
- 如何在没有打印语句的情况下报告用户输入错误
- 在最坏的情况下试验快速排序.它运行良好,但在最坏的情况下发生未知错误.我想
- 如何在不设置 ulimit -n 的情况下解决套接字程序打开太多文件的错误
- 调整向量大小并检索值,这是否正确或在任何情况下都可能导致段错误?
- 如果 return 语句在带括号的循环中,错误可能会到达非 void 函数的末尾,但不会显示在没有括号的循环的情况下
- 我需要在不使用前向声明的情况下相互包含两个头文件,导致"incomplete type"错误
- 在存在错误代码的情况下输出参数与 NRVO
- 对象无法访问其私人数据.错误:在这种情况下私有
- 在这种情况下如何解决?语法错误:在"* "node" ?
- 如何编写一个通用函数,该通用函数在没有任何条件和条件的情况下工作(无论是真实和错误)
- 错误:在 DLSYSM 的情况下,从“void*”到“void (*)()”的转换无效
- 我的调试器说我有一个隔离错误错误,但无法告诉我在哪里,在非常特殊的情况下发生
- 为什么在这种情况下编制动态库错误
- 即使我传递了无效的类型参数,我为什么还能在没有错误的情况下编译此代码
- 呼叫send()关闭申请的情况下没有错误
- 如何在没有错误的情况下展示特殊的中文,韩语,日本角色
- C 如何在没有错误的情况下调用void函数
- 在不包括任何内容的情况下获得错误声音