首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ostringstream中断cout?

ostringstream中断cout?
EN

Stack Overflow用户
提问于 2013-05-22 03:01:38
回答 1查看 442关注 0票数 3

我希望将ostringstream的内容输出到其他流(例如std::cout)。我知道我可以使用std::ostringstream::str(),但我假设它在将流内容复制到一个字符串,然后进一步复制到另一个流时会有一定的开销。我发现我可以使用std::ostringstream::rdbuf() (Comment suggesting that has 25 votes)。但它破坏了std::cout,如下面测试程序的输出所示。我做错了什么吗?

代码语言:javascript
复制
#include <iostream>
#include <sstream>

int main(int argc, char const *argv[])
{
    std::ostringstream ss;
    ss << "some data" << std::endl;
    std::cerr << std::cout << std::endl;
    std::cout << "start" << std::endl;
    std::cout << ss.str();
    std::cout << ss.rdbuf();
    std::cout << "end" << std::endl;
    std::cerr << std::cout  << std::endl;
    return 0;
}

结果如下:

代码语言:javascript
复制
0x6013b8
start
some data
0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-22 03:36:23

您的问题是,ostringstreamrdbuf()缓冲区是只写的( ostringstream通过str()方法返回字符串)。你不能通过buffer指针把数据读出来。

将您的ostringstream更改为stringstream,它应该可以正常工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16677538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档