繁体   English   中英

如何将ostringstream直接写入cout

[英]how to write ostringstream directly to cout

如果我有一个名为ossstd::ostringstream对象,我知道我可以用std::cout << oss.str()打印出字符串。 但是执行oss.str()会导致返回的字符串被复制。 有没有办法直接打印底层的streambuf

提前致谢!

如果你正在使用std::ostringstream那就没有了。 无法读取此基础缓冲区(因此ostringstreamo ),因此您必须依靠实现来通过str()为您执行此操作。

但是,如果你使用std::stringstream (注意缺少o ),那么底层缓冲区是可读的,而basic_ostream对缓冲区的读取有一个特殊的重载:

#include <iostream>
#include <sstream>

int main()
{
    std::stringstream ss1;
    ss1 << "some " << 111605 << " stuff" << std::flush;

    std::cout << ss1.rdbuf() << std::endl;
    std::cout << ss1.str() << std::endl;
}

输出:

一些111605的东西
一些111605的东西

例子来自这里 。)

这直接从底层缓冲区复制,没有中间副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM