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