我有这个代码,
int main()
{
std::string st;
std::stringstream ss;
ss<<"hej hej med dig"<<std::endl;
std::getline(ss,st,' ');
std::cout <<"ss.rdbuf()->str() : " << ss.rdbuf()->str();
std::cout <<"ss.rdbuf() : " << ss.rdbuf();
return 0;
}
给我这个输出
ss.rdbuf()->str() : hej hej med dig
ss.rdbuf() :hej med dig
但这是为什么呢?是因为operator
ss.rdbuf()->str();
返回所有缓冲区内容的副本。
做什么std::cout << ss.rdbuf();
?
请参阅说明
basic_ostream<charT,traits>& operator<<(basic_streambuf<charT,traits>* sb);
它从缓冲区中逐个字符读取并将它们写入 ostream,直到发生 eof/写入失败/异常。
你已经读过 buff 的一个字了。现在它读取其余部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)