【发布时间】:2019-10-17 20:50:02
【问题描述】:
有以下代码:
std::vector<int64> values;
std::copy(
std::istream_iterator<int64>(std::cin),
std::istream_iterator<int64>(),
std::back_inserter(values)
);
我想让它只读取输入流直到行尾。我如何使用std::istream_iterator 做到这一点?
【问题讨论】:
-
cononical 方法是使用
std::getline读取行,将其放入std::istringstream,然后按照您在此处执行的方式复制到向量中。 -
是的,我知道这是可能的,但是我们可以通过处理
std::string来获得更多的复制,然后再次重复它以 push_back 进入向量 -
istream_iterator将始终迭代到流的末尾。对此您无能为力,除了创建一个新的流,其末端精确定义在您想要的位置。最简单的方法是使用stringstream。
标签: c++ istream istream-iterator