C++ 中的标准输入过滤循环是while(cin >> a)
- 这将一直读取,直到没有更多输入,或发生其他不好的事情:
#include <vector>
#include <iterator>
#include <iostream>
int main() {
std::vector<int> nums;
while (std::cin >> a) {
nums.push_back(a);
}
std::copy(nums.begin(), nums.end(), ostream_iterator<int>{cout, " "});
}
您还可以使用带有输入迭代器的单行 - 读取向量中元素的最短方法:
#include <vector>
#include <iterator>
#include <algorithm>
#include <iostream>
int main() {
std::vector<int> nums(std::istream_iterator<int>(std::cin), {});
std::copy(nums.begin(), nums.end(), std::ostream_iterator<int>{std::cout, " "});
}
See IDEONE 示例在这里 http://ideone.com/X00ITW
然而,假设您希望忽略所有这些 C++ 的强大之处,恕我直言,强烈建议您不要这样做,您可以:
#include <iostream>
int main() {
const int MAX_SIZE = 100;
int nums[MAX_SIZE];
int a;
int i=0;
while (std::cin >> a) {
nums[i++] = a;
}
// do your output
}
请注意,您将:
- 需要猜测
MAX_SIZE
,
- 或者一旦读取的元素多于 MAX_SIZE 就手动处理重新分配;
因此:使用std::vector
!!