我正在尝试下面的代码片段,但它没有提供所需的输出:
#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::stringstream
并std::ostringstream
传递不同的标志std::stringbuf
.特别是,
std::stringbuf
a std::ostringstream
不支持阅读.并且std::cout << stream.rdbuf()
是对streambuf的读取操作.
从a中提取字符的方法std::ostringstream
是使用该std::ostringstream::str()
函数.