程序看起来像:
#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 等中。
从你的输出消息来看,你似乎在期待at least6 个整数作为输入。这意味着您需要一个可以添加任意数量元素的容器,例如std::vector<int> Nums;
。然后你可以使用std::copy
提取int
s from cin
并将它们推入向量中std::back_inserter
:
std::copy(std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::back_inserter(Nums));
查看实际效果 http://ideone.com/QhaO0l.
这里可能有很多您不熟悉的事情:
-
std::copy
是一种从一个范围复制到另一个范围的算法。前两个参数表示要复制的范围的开始和结束,第三个参数表示要复制到的范围的开始。
-
std::istream_iterator
是一种迭代器类型,当它递增时,它会从您提供的流中提取。
-
std::istream_iterator<int>(std::cin)
构造一个迭代器来提取int
s from std::cin
-
std::istream_iterator<int>()
构建了一个特殊的流尾迭代器。它代表任意流的结束。这意味着copy
算法将在到达流末尾时停止。
-
std::back_inserter
创建另一个调用的迭代器push_back
在每次分配给它的容器上。作为copy
算法将分配给该迭代器int
从流中提取s,它将把它们全部推入向量中Nums
.
如果这太复杂,这里有另一个使用较少库组件的版本:
int val;
while (std::cin >> val) {
Nums.push_back(val);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)