1

私の目標は、データを に保存することstreambufです。私の考えは、を使用してデータを取得streambufし、取得することです。rdbufsgetn

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 が返されました。

4

1 に答える 1

0

std::streambufに保存されているデータにアクセスするには、 std::ostreamstd::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;
于 2015-12-01T22:45:52.827 に答える