首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中读取单个输入行中的整数列表

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

Stack Overflow用户
提问于 2012-02-20 07:03:19
回答 3查看 12.4K关注 0票数 3

我试图将多个整数从一个输入行读取到一个数组中,例如。输入: 100 200 300 400,所以数组是:a= 100,a1 = 200,a2 = 300,a3 = 400事情是,整数的数目是未知的,所以数组的大小是未知的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-20 07:12:10

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

例如,如下所示:

代码语言:javascript
运行
复制
#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);
票数 8
EN

Stack Overflow用户

发布于 2012-02-20 07:10:13

您可以使用std::vector来执行以下操作:

代码语言:javascript
运行
复制
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>

票数 6
EN

Stack Overflow用户

发布于 2012-02-20 07:13:46

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

代码语言:javascript
运行
复制
#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所说的那样,一次性地从输入构造向量(如果这是一个选择):

代码语言:javascript
运行
复制
std::vector numbers(std::istream_iterator<int>(std::cin),
                    std::istream_iterator<int>());

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9354192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档