我最近才开始使用 boost 库,发现在包含某个 boost 标头(可能是 filesystem.h(后,cout 函数可以完美地打印出同一个程序中的字符串和 wstring。更重要的是,在打印 wstring 时,内容用引号引起来。
我对目前的行为非常满意,并希望充分了解其背后的机制,以避免任何可能的不当行为。
boost::filesystem::path
有一个来自string_type
的隐式转换构造函数,定义为std::basic_string<value_type>
。value_type
的定义因环境而异。值得注意的是,wchar_t
在Windows上。这意味着在Windows上,string_type
是std::basic_string<wchar_t>
,也就是std::wstring
.
所以你的wstring
被隐式转换为boost::filesystem::path
,它被重载以通过operator<<
打印。