c++ - boost::asio::write UNICODE

标签 c++ boost unicode stream boost-asio

我在 ANSII 中有以下代码:

boost::asio::streambuf buffer;
std::ostream oss(&buffer);

boost::asio::async_write(socket_, buffer,
    strand_.wrap(
    boost::bind(&Connection::handleWrite, shared_from_this(),
    boost::asio::placeholders::error)));

我需要将其转换为 UNICODE。我尝试了以下方法:

boost::asio::basic_streambuf<std::allocator<wchar_t>> buffer; 
std::wostream oss(&buffer); 

boost::asio::async_write(socket_, buffer,
    strand_.wrap(
    boost::bind(&Connection::handleWrite, shared_from_this(),
    boost::asio::placeholders::error)));

有没有办法在 UNICODE 中使用 async_write()?

最佳答案

您需要知道您的数据以何种编码方式传入。

例如,在我的应用程序中,我知道 unicode 数据以 UTF-8 格式传入,因此我使用函数的普通 char 版本。然后我需要将缓冲区视为 unicode utf-8 数据 - 但一切都已接收/发送正常。

如果您使用不同的字符编码,那么您可能(或可能不会)像您尝试过的那样使用宽字符版本获得更好的里程数。

关于c++ - boost::asio::write UNICODE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303425/

相关文章:

c++ - 对 GUI 库的建议?

c++ - Boost::公历和闰年

c++ - 将 unicode 替换为 C++ 字符串中的空格时出现段错误

c++ - c 风格的类型转换和 operator()

c++ - 在Linux中,等效于在c/c++中打开物理驱动器的句柄并写入MBR的方法是什么?

c++ - boost iostreams 的 QT 链接器错误

Python字符串转换(本地化)问题

python - 统一码编码错误 : 'ascii' codec can't encode characters

c++ - 在不显式传递实例的情况下从内部类访问外部类

c++ - 如何从 boost 获取平台 ID?