为什么stringstreams rdbuf()和str()给我不同的输出? [英] Why is stringstreams rdbuf() and str() giving me different output?

查看:850
本文介绍了为什么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() - > str():hej hej med dig

ss.rdbuf()->str() : hej hej med dig

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()给我不同的输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆