![](/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.