为什么 stringstreams rdbuf() 和 str() 给出不同的输出?

2024-01-19

我有这个代码,

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(使用前将#替换为@)

为什么 stringstreams rdbuf() 和 str() 给出不同的输出? 的相关文章

随机推荐