【问题标题】:boost::asio::streambuf with wchar_tboost::asio::streambuf 与 wchar_t
【发布时间】:2011-11-28 19:59:44
【问题描述】:
我正在尝试使用宽字符执行以下操作:
boost::asio::streambuf io_streambuf_;
std::iostream io_stream(io_streambuf_);
我试过了,但出现了一堆编译器错误:
boost::asio::streambuf io_streambuf_;
std::wiostream wio_stream(io_streambuf_);
我知道streambuf 是<char>,但我如何使用wchar_t 缓冲流?
【问题讨论】:
标签:
c++
unicode
buffer
boost-asio
iostream
【解决方案1】:
boost::asio::streambuf 是 boost::asio::basic_streambuf 的类型定义。 basic_streambuf 的默认模板实现是:
template<typename Allocator = std::allocator<char>>
class basic_streambuf :
noncopyable
所以你需要做的是声明:
boost::asio::basic_streambuf<std::allocator<wchar_t>> io_streambuf_;
std::wiostream wio_stream(io_streambuf_);
注意:我尚未对此进行测试 - 但这是您问题的核心。