如何让 C++ 暂停以等待用户在 for 循环中输入

时间:2021-05-26 22:07:33

标签: c++

我在 C++ 中有以下代码片段

int main(){
  std::vector<int> numbers(10);
  for (int i = 0; i < numbers.size(); i++){
    std::cout << "Please enter number " << i << "\n";
    std::cin >> numbers[i];
  }
}

我希望对于 for 循环中 i 的每个值,代码都会等待我的输入输入下一个数字。但是,我只是打印了 10 次“请输入数字 i”,然后循环结束。我对 C++ 还很陌生,所以我不太确定如何解决这个问题,而且为什么我的代码是错误的。

2 个答案:

答案 0 :(得分:0)

也许你会喜欢这个。包含一些错误检查,如果预期值不是数字或数字太大。

#include <iostream>
#include <string>
#include <vector>
#include <locale>  // std::stoi - string to integer ( int )
#include <stdexcept>  // exeptions

int main(){
  std::vector<int> numbers(10);

  for (size_t i = 0; i < numbers.size(); i++){
    std::cout << "Please enter number " << i << "\n";
    std::string  temp = "";
    int temp2 = 0;
again:
    std::getline (std::cin,temp); 
    
    try{
        temp2 = std::stoi(temp);
    }
    catch (const std::invalid_argument & e) {
            std::cout << e.what() << "\n";
            std::cout << "that's no number, please, try again\n";
            goto again;
        }
    catch (const std::out_of_range & e) {
        std::cout << e.what() << "\n";
        std::cout << "something bad happend, please, try again\n";
        goto again;
    }
    numbers[i] = temp2;
  }
  for(auto i : numbers)
      std::cout << i <<" ";
    std::cout<< "\n";    
    return 0;
}

答案 1 :(得分:-1)

它工作正常,进程在每个循环周期等待您的输入。如果您输入一个非整数,程序将提前终止,因为输入的数据类型不正确。

相关问题