Как конвертировать boost beast multi_buffer в строку?

Я копирую пример websocket с сайта boost :: beast и запускаю его. Сессия Websocket работает нормально, но я не знаю, как преобразовать полученный multi_buffer в строку.

ниже приведен код обработчика сеанса websocket.

void
do_session(tcp::socket &socket) {
try {
// Construct the stream by moving in the socket
websocket::stream <tcp::socket> ws{std::move(socket)};

// Accept the websocket handshake
ws.accept();

while (true) {
// This buffer will hold the incoming message
boost::beast::multi_buffer buffer;

// Read a message
boost::beast::error_code ec;
ws.read(buffer, ec);

if (ec == websocket::error::closed) {
break;
}

// Echo the message back
ws.text(ws.got_text());
ws.write(buffer);
}

cout << "Close" << endl;
}
catch (boost::system::system_error const &se) {
// This indicates that the session was closed
if (se.code() != websocket::error::closed)
std::cerr << "Error: " << se.code().message() << std::endl;
}
catch (std::exception const &e) {
std::cerr << "Error: " << e.what() << std::endl;
}
}

Есть ли способ конвертировать буфер в строку?

5

Решение

Ты можешь использовать буферы на buffer.data()

std::cout << "Data read:   " << boost::beast::buffers(buffer.data()) <<
std::endl;
12

Другие решения

Поскольку оригинальный вопрос был о преобразовании в строку напрямую, без использования потоков, я решил добавить свой ответ.

Ты можешь использовать beast::buffers_to_string(buffer.data()),

0

По вопросам рекламы [email protected]