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

How do I convert a boost::beast's response<buffer_body> to a response<string_body>?

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

使用 beast 的 api 有什么优雅有效的方法?

P.S.

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

谢谢, 大卫.

好的,我做到了

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;

原来header有一个copy constructor,所以我所要做的就是分配string body..

所以如果复制构造函数是高效的(很可能是这样),这个解决方案也是高效的。