如何将boost :: beast的response <buffer_body>转换为response <string_body>?

时间:2019-10-31 13:30:33

标签: c++ http boost boost-beast

我需要将boost::beast::http::response<boost::beast::http::buffer_body>转换为boost::beast::http::response<boost::beast::http::string_body>

使用野兽的api进行优雅而有效的方式是什么?

P.S。

我认为序列化和解析不是那么有效,也许还有更好的方法。但是如果那是解决方案,因为我是野兽新手,所以我也很高兴看到一个优雅的代码示例。

谢谢, 大卫。

1 个答案:

答案 0 :(得分:0)

好,我设法做到了

boost::beast::http::response<boost::beast::http::string_body> string_response;
boost::beast::http::response<boost::beast::http::buffer_body> buffer_response;
std::string response_body

// Do stuff to read the response and fill the response_body using the buffer

string_response.base() = buffer_response.base();
string_response.body() = response_body;

原来,标头具有复制构造函数,所以我要做的就是分配字符串主体。

因此,如果复制构造函数高效(奇怪的是),则此解决方案也是有效的。