C++ ostringstream能不能?
我想将C++ ostringstream能不能?,c++,ostringstream,C++,Ostringstream,我想将ostringstream的内容输出到其他流(例如std::cout)。我知道我可以使用std::ostringstream::str(),但我假设它在将流内容复制到字符串然后进一步复制到另一个流时会产生开销。我发现我可以使用std::ostringstream::rdbuf()()。但它会中断std::cout,如下面测试程序的输出所示。我做错什么了吗 #include <iostream> #include <sstream> int main(int arg
ostringstream
的内容输出到其他流(例如std::cout
)。我知道我可以使用std::ostringstream::str()
,但我假设它在将流内容复制到字符串然后进一步复制到另一个流时会产生开销。我发现我可以使用std::ostringstream::rdbuf()()。但它会中断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;
}
您的问题是
ostringstream
的rdbuf()
缓冲区,正如您从名称中所期望的那样,是只写的(ostringstream
通过str()
方法返回字符串)。您无法通过缓冲区指针从中读取数据
将您的ostringstream
更改为stringstream
,它应该可以正常工作。按照您的建议使用str()
。
0x6013b8
start
some data
0