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

Reading a list of integer in a single input line in C++

本文关键字:整数 列表 单个 C++ 读取 输入      更新时间:2023-10-16

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

您应该使用一个自动调整自身大小的容器,例如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);

您可以使用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>

插入器和流迭代器可以很好地做到这一点:

#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