在C++中读取单个输入行中的整数列表
Reading a list of integer in a single input line in C++
我正试图将多个整数从一个输入行读取到一个数组中例如,输入: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
。
相关文章:
- 如何在 sqlite3 中的表中添加整数列表
- 通过在带有 C++ 的列表中添加连续元素来计算新的整数列表
- 最大数量.给定一个非负整数列表,排列它们以使它们形成最大的数字
- 有效比较整数列表与C++中给定的整数
- 输入正整数或负整数列表,以使用开关函数 c++ 确定数字是偶数还是奇数
- 如何使用整数列表在LLVM中初始化整数数组
- 如何扩展类模板整数列表
- 如何生成升序随机整数列表
- 从文本文件将整数读入简单的链表中.然后对整数列表进行气泡排序并读出到另一个文件
- 填充整数列表比填充整数向量快 100 倍
- 整数列表的交集-无法返回结果列表
- 解析整数列表以进行向量、映射或多映射
- 从整数列表中交叉检查整数运行时错误
- 用于处理 3 个整数列表的数据结构
- 访问与命令行参数关联的整数列表
- 将整数列表打印为逗号分隔的数字列表,每行最多 10 个
- 正在将整数列表读取到数组C++中
- 在C++中读取单个输入行中的整数列表
- 为什么我会超时(使用sstream解析用逗号分隔的整数列表)
- 使用连续的无符号整数列表初始化 std::vector<无符号 int>