C++ std::streambuf::in_aval始终为std::ostream返回0

C++ std::streambuf::in_aval始终为std::ostream返回0,c++,stl,streambuf,C++,Stl,Streambuf,我的目标是获取存储在streambuf中的数据。我的想法是通过rdbuf获取streambuf,然后使用sgetn获取数据 class mystreambuf : public std::streambuf {} mystreambuf strbuf; std::ostream os(&strbuf); os << "1234567890"; std::streambuf *sb = os.rdbuf(); std::streamsize size = sb->in_

我的目标是获取存储在
streambuf
中的数据。我的想法是通过
rdbuf
获取
streambuf
,然后使用
sgetn
获取数据

class mystreambuf : public std::streambuf {}

mystreambuf strbuf;
std::ostream os(&strbuf);
os << "1234567890";
std::streambuf *sb = os.rdbuf();
std::streamsize size = sb->in_avail();
class mystreambuf:public std::streambuf{}
mystreambuf strbuf;
标准:ostream操作系统和strbuf;
os in_avail();

我希望得到10,但我从\u avail方法中的
返回了0。

为了访问存储在a中的数据,您可以将链接到a并使用
std::stringbuf::str()获取其内容。

std::stringbuf strbuf;
标准:ostream操作系统和strbuf;

os为了访问存储在中的数据,您可以使用
std::stringbuf::str()

std::stringbuf strbuf;
标准:ostream操作系统和strbuf;

os为什么输出流有可用的输入?为什么输出流有可用的输入?
std::stringbuf strbuf;
std::ostream os(&strbuf);  
os << "1234567890";

std::string content(strbuf.str());
std::cout << "size: " << content.size() << std::endl;
std::cout << "content: " << content << std::endl;
std::ostringstream os;  
os << "1234567890";

std::string content(os.str());
std::cout << "size: " << content.size() << std::endl;
std::cout << "content: " << content << std::endl;