我的目标是将数据存储在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();我期望得到10,但是我从in_avail方法中得到了0。
发布于 2015-12-02 06:45:53
为了访问存储在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;https://stackoverflow.com/questions/33936113
复制相似问题