Если вы хотите отправить данные, используя внутреннюю кодировку UnicodeString
по умолчанию (вместо форсирования, например, UTF-8 или UTF-32), тогда должно работать следующее:
// given UnicodeString ustr
boost::asio::const_buffer(ustr.getBuffer(), ustr.length() * sizeof(UChar));
См. UnicodeString :: getBuffer () и UnicodeString :: length () для получения дополнительной информации.
РЕДАКТИРОВАТЬ (в ответ на комментарий): чтобы отправить нормализованные данные UTF-32, попробуйте что-то вроде этого (добавив обработку ошибок и увеличив срок жизни объекта по мере необходимости):
UErrorCode err = U_ZERO_ERROR;
int32_t const size = ustr.toUTF32(0, 0, err);
err = U_ZERO_ERROR;
std::vector<UChar32> databuf(size);
ustr.toUTF32(&databuf[0], size, err);
boost::asio::const_buffer(&databuf[0], databuf.size() * sizeof(UChar32));