[英]How to write vector of ostreams in C++ which takes in all the different output streams like cout, ostringstream and ofstream
[英]how to write ostringstream directly to cout
如果我有一个名为oss
的std::ostringstream
对象,我知道我可以用std::cout << oss.str()
打印出字符串。 但是执行oss.str()
会导致返回的字符串被复制。 有没有办法直接打印底层的streambuf
?
提前致谢!
如果你正在使用std::ostringstream
那就没有了。 无法读取此基础缓冲区(因此ostringstream
的o
),因此您必须依靠实现来通过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.