我想将 a 的内容输出ostringstream
到其他流(例如std::cout
)。我知道我可以使用std::ostringstream::str()
,但我认为将流内容复制到字符串然后再复制到另一个流会有开销。我发现我可以使用std::ostringstream::rdbuf()
(评论建议有 25 票)。但它会中断std::cout
,如下面的测试程序的输出所示。难道我做错了什么?
#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;
}
结果是:
0x6013b8
start
some data
0