我想有人不得不问这些问题,所以请多多包涵。
让我们考虑以下野兽:
- ostream
- istream
- iostream
- 流缓冲
字符串- 根据本杰明的观察,这个不属于这里。- 字符串缓冲区
和以下迭代器:
- ostream_iterator
- ostreambuf_iterator
- istream_iterator
- istreambuf_iterator
问题:
为什么不存在iostream_iterator
, streambuf_iterator
, (std::string::iterator 和 std::string::const_iterator 确实存在) 或string_iterator
stringbuf_iterator
?
为什么上面列出的 4 个迭代器没有类似的 const 版本std::vector<T>::const_iterator
?
如果它们不提供 begin() 和 end() 方法,我们应该如何迭代这些野兽中的任何一个?以上4个迭代器的目的是什么?
N00b 问题:我在哪里可以找到详细说明这些类背后的逻辑以及如何使用它们的一些不错的示例的好参考?
希望有经验的人能为上述问题提供一个很好的答案。
PS:现实生活中的情况:
void writeToStream(std::ostream &out);
int main ()
{
std::ostringstream byteStream;
writeToStream(byteStream);
std::string byteString = byteStream.str();
for (unsigned short i = 0; i < byteString.size(); ++i)
{
//do something with each byteString[i]
}
return 0;
}
我的猜测是,我可以ostream
通过使用类似 for 的迭代器来使用和迭代其元素std::vector
,而不是使用ostringstream
andstr()
将其转换为 a 的方法string
,但我找不到任何有关此的信息。