我无法从文档中看出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()使流返回的字符数增加.我想,这就是“消耗流”的意思.从ss读取6个字符后,下一个字符读取将是w.
但是,字符串流的内部缓冲区仍然是整个字符串,即str()的结果不受读取位置的影响:std :: stringstream :: str()返回所有字符.在27.8.2.3 [stringbuf.members]第1段中,它说:
basic_string<charT,traits,Allocator> str() const;
Returns: A basic_string object whose content is equal to the basic_stringbuf underlying character sequence. …
该段落继续描述底层字符序列是什么,但它相当于:输入模式中的整个原始字符串和原始字符以及输出模式中的其他写入字符.