本文介绍了为什么stringstreams rdbuf()和str()给我不同的输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个代码,
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():hej med dig
ss.rdbuf() : hej med dig
但是为什么?是因为ostreams定义的operator< str()给我不同的输出。在我看来,即使我已经使用getline,输出应该是一样的。
But why is that? Is that because of ostreams definition of operator<str() gives me different output. In my eyes the output should be the same even if I have used getline.
推荐答案
ss.rdbuf()->str();
返回所有缓冲区内容的副本。
Returns copy of all buffer content.
做什么 std :: cout< ss.rdbuf();
?
查看
basic_ostream<charT,traits>& operator<<(basic_streambuf<charT,traits>* sb);
它从缓冲区中逐个字符读取并写入ostream,直到写入/异常时的eof / fail发生。
It read character by character from buffer and write them to ostream, until eof/fail on writing/exception occurs.
您已经从buff读了一个字。现在它读休息部分。
You already have read one word from buff. Now it read rest part.
这篇关于为什么stringstreams rdbuf()和str()给我不同的输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!