如何在此代码中停止输入 - 输入未知大小的一维数组的代码

How to stop input in this code- a code to input an 1D array with unknown size

提问人:HCMUSer 提问时间:2/17/2023 更新时间:2/17/2023 访问量:46

问:

我尝试这样做,但我不知道如何停止输入。我用输入一个带有整数元素的数组构建一个代码,当输入元素不是整数时,它将忽略。所以我无法阻止它。

do {
  if(std::cin >> val) {
    if(val == 0) break;
    vec.push_back(val);
  } else { 
    std::cin.clear();
    std::cin.ignore(1,'\n');
  }
} while(true);

我尝试输入 ctrl + x,z,d,但它不起作用。

C++ 数组 循环矢 输入

评论

1赞 kiner_shah 2/17/2023
..它会忽略。所以我无法阻止它。那为什么忽略,就打破。
0赞 463035818_is_not_an_ai 2/17/2023
if(val == 0) break;当您进入时,循环停止0

答:

2赞 Serge Ballesta 2/17/2023 #1

您可以决定在文件末尾停止输入。当您从 true 文件读取时,或者在 Windows 或 Linux 上使用 or 时,会在文件的实际结束时引发该条件。您只需要在忽略任何有问题的输入之前对其进行测试:CtrlZF6CtrlD

do {
  if(std::cin >> val) {
    if(val == 0) break;
    vec.push_back(val);
  } else if (std::cin.eof()) {
    break;       // exit loop on eof
  } else { 
    std::cin.clear();        // ignore any offending input up to end of line
    std::cin.ignore(1,'\n');
  }
} while(true);