我无法从文档中看出如何std::stringstream.read()
作品。它是否消耗流?
换句话说:
std::stringstream ss;
char buffer[6];
ss << "Hello world!";
ss.read(buffer, 6);
std::cout << ss.str(); // Is this "Hello world!" or just "world!"
会员std::istream::read()
将流位置推进与其返回的字符数相同的位置。我想,这就是您所说的“消耗流”的意思。读取 6 个字符后ss
,下一个读取的字符将是w
.
然而,字符串流的内部缓冲区仍然是整个字符串,即str()
不受读取位置的影响:std::stringstream::str()
返回所有字符。在 27.8.2.3 [stringbuf.members] 第 1 段中说:
basic_string<charT,traits,Allocator> str() const;
返回: 一个 basic_string 对象,其内容等于 basic_stringbuf 基础字符序列。 ...
该段落继续描述底层字符序列是什么,但它相当于:输入模式下的整个原始字符串和输出模式下的原始字符加上附加的书面字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)