如何解决asio :: streambuf无法与std :: istream一起使用
data1打印“ hello,world”,data2为零。
我认为memcpy不是一个好方法 为什么data2为nil?
请让我知道。谢谢。
class Content : public std::istream {
public:
Content(asio::streambuf& streambuf) noexcept
: std::istream(&streambuf_),streambuf_(streambuf) {
}
~Content() {
}
public:
std::size_t size() noexcept {
return streambuf_.size();
}
std::string string() {
std::string str;
auto size = streambuf_.size();
str.resize(size);
read(&str[0],static_cast<std::streamsize>(size));
return str;
}
private:
asio::streambuf& streambuf_;
};
int main() {
logger_init();
asio::streambuf streambuf;
std::ostream out(&streambuf);
out << "hello,world" << std::endl;
char* data = (char*)calloc(1,sizeof(char) * streambuf.size());
memcpy(data,asio::buffer_cast<const void*>(streambuf.data()),streambuf.size());
LOG(INFO) << "data1: " << data;
Content content(streambuf);
LOG(INFO) << "data2: " << content.string();
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。