gpt4 book ai didi

c++ - 使用 istream 从文件中读取 int 数据

转载 作者:太空狗 更新时间:2023-10-29 20:52:00 31 4
gpt4 key购买 nike

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提及:

The default-constructed std::istream_iterator is known as the end-of-stream iterator. When a valid std::istream_iterator reaches the end of the underlying stream, it becomes equal to the end-of-stream iterator. Dereferencing or incrementing it further invokes undefined behavior.

来自cplusplus ,我们有这个:

These operators are overloaded in header <iterator>.

关于c++ - 使用 istream 从文件中读取 int 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47569291/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com