在C ++中读取单个输入行中的整数列表

时间:2012-02-19 23:03:19

标签: c++ integer

我正在尝试从单个输入行读取多个整数到数组中 例如。输入:100 200 300 400,因此数组为:a [0] = 100,a [1] = 200,a [2] = 300,a [3] = 400 问题是,整数的数量是未知的,因此数组的大小是未知的。

3 个答案:

答案 0 :(得分:7)

您应该使用自动调整大小的容器,例如std::vector

例如,像这样:

#include <string>
#include <iostream>
#include <sstream>
#include <utility>
#include <iterator>

std::string line;
getline(instream, line);
std::istringstream this_line(line);
std::istream_iterator<int> begin(this_line), end;
std::vector<int> values(begin, end);

答案 1 :(得分:3)

您可以使用std::vector

std::vector<int> myVector;

std::string line;
std::getline(std::cin, line);
std::istringstream os(line);

int i;
while(os >> i)
    myVector.push_back(i);

此代码需要包含以下内容:<iostream><string><sstream><vector>

答案 2 :(得分:1)

插入器和流迭代器可以很好地完成这个任务:

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

std::vector<int> numbers;

std::copy(std::istream_iterator<int>(std::cin),
          std::istream_iterator<int>(),
          std::back_inserter(numbers));

或者,正如@Ben Voigt所说的那样,一次性从输入构造向量(如果这是一个选项):

std::vector numbers(std::istream_iterator<int>(std::cin),
                    std::istream_iterator<int>());

如果输入要求更复杂,可以用合适的字符串流替换std::cin