首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将boost streambuf转换为string_ref

将boost streambuf转换为string_ref
EN

Stack Overflow用户
提问于 2017-04-10 21:23:19
回答 1查看 81关注 0票数 1

下面的代码对我来说编译得很好,但是考虑到ASIO缓冲区的设计有点复杂,我不确定它是否正确。这样做的目的是允许将streambuf的内容提供给HTTP解析器,而无需创建中间的std::string对象,其他std::string代码示例似乎就是这样做的。

代码语言:javascript
复制
boost::string_ref makeStringRef(const boost::asio::streambuf& streambuf)
{
    auto&& bufferType = streambuf.data();

    return {
        boost::asio::buffer_cast<const char*>(bufferType),
        boost::asio::buffer_size(bufferType)
    }; 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-11 08:33:19

我认为这是不正确的,因为流线可能有几个不相邻的区域。

所以你无论如何都要抄袭。或者,只需将其读入固定的缓冲区即可。当然,这要求您提前知道最大大小,或者分几个步骤阅读。

顺便说一句,通过使用const&,您可能会创建一个引用临时string_refstring_ref。对生命时间的期望值要尽量明确。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43333099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档