区别stringstream和ostringstream

Sak*_*ham 15 c++

我正在尝试下面的代码片段,但它没有提供所需的输出:

#include<iostream>
#include<sstream>
using namespace std;
void MyPrint(ostream& stream)
{
    cout<<stream.rdbuf()<< endl;
}
int main()
{
    stringstream ss;
    ss<<"hello there";
    MyPrint(ss);                //Prints fine

    ostringstream oss;
    oss<<"hello there";
    MyPrint(oss);               //Does not print anything
    getchar();
}
Run Code Online (Sandbox Code Playgroud)

我知道stringstream和之间唯一可能的区别ostringstream是后者强迫方向并且比它快一点stringstream.

我错过了什么吗?

PS:之前发布了一个类似的问题,但没有得到任何答案.

Jam*_*nze 22

std::stringstreamstd::ostringstream传递不同的标志std::stringbuf.特别是, std::stringbufa std::ostringstream不支持阅读.并且std::cout << stream.rdbuf()是对streambuf的读取操作.

从a中提取字符的方法std::ostringstream是使用该std::ostringstream::str()函数.