无法使用 Boost Format() 从 wstring 转换

Posted

技术标签:

【中文标题】无法使用 Boost Format() 从 wstring 转换【英文标题】:Cannot convert from wstring with Boost Format() 【发布时间】:2016-06-10 01:59:54 【问题描述】:

我有一个异常类定义如下:

class DeviceOpenException : public std::runtime_error 
public:
    DeviceOpenException(const std::string& message)
        : std::runtime_error("Device Open Exception: " + message)  ;
; 

我抛出异常如下:

throw DeviceOpenException(boost::str(boost::format("Cannot Open HID Device [Vendor ID = %1%] [Product ID = %2%] [Serial Number = %3%]") % vendorID %productID % serialNumber));

其中给former的参数如下:

(unsigned short vendorID, unsigned short productID, std::wstring serialNumber)

但是,这会导致以下编译错误:

error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const std::wstring' (or there is no acceptable conversion)

是我,还是 Boost 格式化程序不适用于 wstring 类型?

【问题讨论】:

【参考方案1】:

对宽字符串使用boost::wformat。请参阅文档here。

注意 typedef:

typedef basic_format&lt;wchar_t &gt; wformat;

【讨论】:

以上是关于无法使用 Boost Format() 从 wstring 转换的主要内容,如果未能解决你的问题,请参考以下文章

一起学习Boost标准库--Boost.texical_cast&format库

Boost buffer_cast 无法从 void* 转换为 PointerToPodType

无法编译使用 boost 中的 odeint 的 C++

Boost分类汇总

无法从 VS2019 中的 Boost 属性树映射值中获取值()

通过 SWIG 从 Ruby 调用 Boost?