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;