在一行中输入未知数量的变量(在C ++中)

时间:2014-10-09 05:07:08

标签: c++

我想在一行中输入未知数量的向量。 例如 3 1 1 2 在这里我从第一次输入知道有3个数字。但我不知道如何在矢量数组的下一行存储3个数字。 另一个例子 - 4 2 3 2 3 我想用C ++(vector)。

3 个答案:

答案 0 :(得分:5)

int n, x;
std::vector<int> v;
if (std::cin >> n)
    while (n--)
        if (std::cin >> x)
            v.push_back(x);
        else
            throw std::runtime_error("missing value");
else
    throw std::runtime_error("missing count");

答案 1 :(得分:1)

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
    int count = 0;
    std::cin >> count;
    // check that count is correct

    std::vector<int> vec;

    // input
    std::copy_n(std::istream_iterator<int>(std::cin), count, std::back_insert_iterator<std::vector<int> >(vec)); // std::copy_n is part of C++11

    // show vector
    std::copy(std::begin(vec), std::end(vec), std::ostream_iterator<int>(std::cout, " ")); // std::begin() and std::end() are part of C++11

    return 0;
}

答案 2 :(得分:1)

试试这个,对我有用:

#include <vector>
#include <sstream>

vector<int> numbers;
string str;
int x;

getline (cin, str);
stringstream ss(str);
while (ss >> x)
    numbers.push_back(x);

如果我输入类似的内容:

1 2 3 4 5

向量包含这些数字,然后继续执行下一行代码,而不是循环返回以从用户那里获得更多输入