悫`istreambuf_iterator`和'有什么区别悫
istreambuf_iterator
和istream_iterator
的差异。istream_iterator`对于下面的代码:
istream_iterator<int> cin_in(cin); istream_iterator<int> end;
在哪里呢迭代器
end
点?
迭代器是否与流绑定?
如果我写的代码istream_iterator<int>()
是一样的
end
?所有记录在哪里?
回答
是什么悫
istreambuf_iterator
和istream_iterator
的差异。
std::istream_iterator
为格式化提取的迭代器。举例来说,如果你有一个线从文件整数,并希望将它们复制到一些容器,你可以使用std::istream_iterator<int>
在内部将从int
(使用operator>>()
)中提取的值复制到容器:
std::copy(std::istream_iterator<int>(file),
std::istream_iterator<int>(), std::back_inserter(some_container));
std::istreambuf_iterator
是无格式抽取的迭代器。它直接在通过其构造函数提供的对象std::streambuf
上工作。因此,如果你只需要文件的内容而不用担心它们的格式,可以使用这个迭代器。例如,有时您想将整个文件读入字符串或某个容器。一个常规的格式化提取器将丢弃前导空白并转换提取的令牌;缓冲区迭代器不会:
std::string str(std::istreambuf_iterator<char>{file}, {});
哪里迭代器终点?
默认构建的流迭代器只是一个特殊的标记对象,它表示流的结束。由于IOStreams是一次性的,所以在我们读完这一点之前,没有办法直接指向结尾。在内部,当提取失败或读取命中文件结束时,由流(或流缓冲区)构造的迭代器将变为结束流迭代器。这是帮助标准算法与流迭代器一起工作的原因,因为它们像外部的常规迭代器一样工作。
那里的所有记录?
很多地方。正式在标准中。您还可以在cppreference上找到相关文档。
好的答案!谢谢 – Aminos 2016-10-10 12:15:47
- 1. istream_iterator行为
- 2. getline vs istream_iterator
- 3. 使用istream_iterator复制
- 4. istream_iterator消耗从流
- 5. istream_iterator泄漏内存
- 6. vector <int> v(istream_iterator <int>(cin),istream_iterator <int>());
- 7. 如何设置istream_iterator不忽略空行
- 8. istream_iterator尝试解析无效数据
- 9. istream_iterator:采取额外的输入
- 10. 左值istringstream istream_iterator是否必需?
- 11. 使用istream_iterator构造自定义类型的向量
- 12. istream_iterator在读取字符时忽略EOF(Ctrl + D)
- 13. 我如何用libC++ istream_iterator读取文件中的0xFF?
- 14. 使用istream_iterator对int和字符串进行迭代
- 15. 为什么istream_iterator <unsigned char,unsigned char> throw std :: bad_cast?
- 16. 使用std :: istream_iterator从文件中读取行。谁?
- 17. 我可以传递一个字符串istream_iterator <int>
- 18. 无法解释为什么std :: istream_iterator将std :: ios_base设置为错误状态
- 19. C++如何节省使用一个临时变量
- 20. 如何简单地在Java中获得对数组的输入?
- 21. 将文件流式传输到矢量<float> with copy + back_inserter
- 22. C++标准库:通过使用标准输入
- 23. while循环中的C++ STD Cin错误
- 24. 奇怪的C++向量构造函数的行为
- 25. 无法在矢量上迭代
- 26. 没有匹配调用的函数,如何解决?
- 27. 在C++中分离流
- 28. 奇怪的编译错误
- 29. 二进制“>>”:没有运营商发现这需要类型的右手操作数“的std ::对<int,int>”
- 30. 复制从未停止
[我在哪里可以找到当前的C或C++标准文档?](http://stackoverflow.com/questions/81656/where-do-i-find-the-current-c-or-c -standard-documents) – Deduplicator 2014-11-09 02:24:55
@Deduplicator感谢您的编辑! – 2014-11-09 02:25:06
@Deduplicator嗨,感谢您的回复。我已经阅读了你在评论中包含的链接,我发现那里有这么多的答案,我不知道哪一个是有帮助的......我是一个新的C++,阅读过于复杂有点困难东西.. – 2014-11-09 02:26:47