程序看起来像:
#include <iostream>
#include <string>
using namespace std;
int main()
{
//Code
int num1, num2, num3, num4, num5, num6;
int num[6] = { num1, num2, num3, num4, num5, num6 };
cout << "Enter one line containing at least 6 integers." << endl;
getline(cin, num);
输入线:1 2 87 1 2 123 44
我需要将每个数字存储到变量Num1,Num2,Num3等中。
答案 0 :(得分:4)
从输出消息中,您似乎期望至少 6个整数作为输入。这意味着您需要一个可以添加任意数量元素的容器,例如std::vector<int> Nums;
。然后,您可以使用std::copy
从int
中提取cin
并将其推送到带std::back_inserter
的向量中:
std::copy(std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::back_inserter(Nums));
这里可能有一些你不熟悉的合理数量的东西:
std::copy
是一种从一个范围复制到另一个范围的算法。前两个参数表示要复制的范围的开头和结尾,第三个参数表示要复制到的范围的开头。std::istream_iterator
是一个迭代器类型,它在您递增时从流中提取。std::istream_iterator<int>(std::cin)
构造一个从int
std::cin
的迭代器
std::istream_iterator<int>()
构造一个特殊的 end-of-stream 迭代器。它代表任意流的结束。这意味着copy
算法在到达流末尾时将停止。std::back_inserter
创建另一个迭代器,在每次分配给它的容器上调用push_back
。由于copy
算法将为此迭代器分配从流中提取的int
,它会将它们全部推送到向量Nums
。如果这太复杂了,这是另一个使用较少库组件的版本:
int val;
while (std::cin >> val) {
Nums.push_back(val);
}