【问题标题】:Input in same line which is based on previous input在基于先前输入的同一行中输入
【发布时间】:2018-01-13 22:57:48
【问题描述】:

我有一个简单的输入,它需要一个整数。

int n
std::cin >> n
vector<int> vec;

接下来我想做的是接受来自同一行的“n”个整数,并将它们添加到“vec”向量中。

所以如果我的第一个输入是 3,我的下一个输入应该接受来自同一行的 3 个数字:

3
6 1 2

我尝试使用 for 循环,但显然不会使这些输入来自同一行。

for(int i = 0; i < n; i++){
  std::cin >> ...
}

这样做的正确方法是什么?

在 Java 中,我会简单地将 Java.util.Scanner.nextInt() 放在 for 循环中。

【问题讨论】:

  • 如果输入实际上在同一行,这应该可以按照您的方式工作。或者您想拒绝或忽略一行中数字太少或太多的输入或其他什么?

标签: c++


【解决方案1】:

我会这样做:

int n;
cin >> n;
vector<int> v(n);
for (auto &a : v)
{
    cin >> a;
}

【讨论】:

    【解决方案2】:

    使用 std::cin 可以使用 for 循环从同一行获取多个整数。但是,如果用户按回车,则会出现换行符。有更复杂/更有效的方法可以做到这一点,例如在 for 循环中使用迭代器和引用,但如果您是该语言的新手,这种方法更容易理解。

    int n;
    std::cin >> n;
    std::vector<int> vec;
    for (int i = 0; i < n; i++) {
        int integer;
        std::cin >> integer;
        vec.push_back(integer);
    }
    

    如果你真的想在不创建新行的情况下输入变量,请查看此链接:How do I input variables using cin without creating a new line?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2020-03-20
      • 2022-12-22
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多