![](/img/trans.png)
[英]Something about reading portions of data from file using a C++ istream_iterator
[英]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.