我刚刚开始使用boost库,发现在包含一个boost头(可能是filesystem.h)后,cout函数可以在同一个程序中完美地打印出string和wstring。更重要的是,在打印wstring时,内容用引号括起来。
我对目前的行为非常满意,并希望充分了解其背后的机制,以避免任何可能的错误实践。
答案 0 :(得分:2)
boost::filesystem::path
有一个来自string_type
的隐式转化构造函数,定义为std::basic_string<value_type>
。 value_type
根据环境的不同而定义。值得注意的是,Windows上的wchar_t
。这意味着在Windows上,string_type
为std::basic_string<wchar_t>
,a.k.a。std::wstring
。
因此,您的wstring
被隐式转换为boost::filesystem::path
,因为operator<<
进行打印而过载。{/ p>