繁体   English   中英

使用istream从文件读取int数据

[英]Reading int data from file using istream

ifstream dataFile("ints.dat");

istream_iterator<int> dataBegin(dataFile);
istream_iterator<int> dataEnd;

list<int> data(dataBegin, dataEnd);

我在C ++ STL中有上面的代码。

以上代码正在运行。

我们正在创建开始和结束迭代器作为数据开始和数据结束。 但dataEnd与数据文件无关。 列表如何知道范围?

通常看到std::istream_iterator<int> eos; 例如,在ref的例子中,但在你的情况下,你选择的名字可能更合适。

这是EOF的类比,对于标准输入,文件结尾表示在读取的最后一个元素之后1。

eos类似于最后一个迭代器,表示在读取的最后一个元素之后的1。

它类似于EOF ,但是你看到的不一样了。 例如,您为流末尾命名的内容确实无关紧要。 在我上面提供的链接中,有一个可能的实现,如果你愿意,你可以学习。

此外, cpprefernce提到:

默认构造的std :: istream_iterator称为流末端迭代器。 当有效的std :: istream_iterator到达底层流的末尾时,它变得等于流末尾迭代器 取消引用或递增它会进一步调用未定义的行为。

cplusplus ,我们有:

这些运算符在头文件<iterator>中重载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM