c++在没有try Catch block 的情况下捕获错误输入

标签 c++ arrays

<分区>

我试图在没有 tryCatch-Block 的情况下捕获错误的输入。每当用户键入错误的值(例如“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')也可以为您服务。

关于c++在没有try Catch block 的情况下捕获错误输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33742452/

相关文章:

C++/boost : how to signal async task completion?

c++ - 如何使用交叉链接器而不是 native 链接器

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

c++ - segmentation fault,可能原因: function pointer, 多线程,STL map等

c++ - 通过函数遍历c数组

javascript - 如何通过相同键的属性重新排列嵌套数组

c++ - 在数组索引上使用迭代器

javascript - 使用 Javascript 在特定数组值之前添加所有数组值

Javascript 数组表现得很奇怪

c - 如何生成具有相同字符数的单词数?