我的目标是将数据存储在streambuf
中。我的想法是streambuf
获取rdbuf
,然后使用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();
我希望得到10,但我从in_avail
方法返回0。
答案 0 :(得分:0)
要访问std::streambuf中存储的数据,您可以将std::ostream与std::stringbuf相关联,并使用std::stringbuf::str()
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;
这将给出:
尺寸:10
内容:0123456789
较短的方法是使用std::stringstream
std::ostringstream os;
os << "1234567890";
std::string content(os.str());
std::cout << "size: " << content.size() << std::endl;
std::cout << "content: " << content << std::endl;