[英]istream_iterator to initialize vector
我正在尝试从ifstream 鳍中读取内容,并使用istream_iterators将其放入向量vec1中。 我到处都看过这些东西:
vector<int> vec1((istream_iterator<int>(fin)),istream_iterator<int>);
我想保留istream_iterators供以后使用,所以我认为“这应该可以工作”:
istream_iterator<int> iit(fin);
istream_iterator<int> eos;
vector<int> vec1(iit,eos);
...这是行不通的=(我的向量完全是空的。(我读取的文件是一个txt文件,除了数字外什么都没有)。
编辑: txt如下所示:
06351784798452318596415234561
6641321856006
根据注释,第一个数字序列大于int
的最大值,因此输入操作将失败,从而导致vector
保持为空。
您可以使用std::numeric_limits
模板获取int
等的最大值:
std::cout << std::numeric_limits<int>::max() << "\n";
作为中间步骤,您可能想要立即遍历该序列以查看是否有东西(可能没有):
while (iit != eos) {
std::cout << *iit++ << '\n';
}
如果仍然无法打印任何内容,请先检查您的信息流是否处于良好状态:
if (!fin) {
std::cout << "file not opened!\n";
}
如果流仅包含数字且没有空格,则它很可能会溢出,因此读取int
失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.