Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ostringstream能不能?_C++_Ostringstream - Fatal编程技术网

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