boost 库的哪一部分使 cout 能够打印 wstring 以及如何打印?

Which part of boost library enables cout to print wstring and how?

最近刚开始使用boost库,发现在包含某个boost头文件(大概filesystem.h)后,cout函数可以在同一个程序中完美打印出string和wstring。还有,打印wstring的时候,内容是用引号括起来的。

我对目前的行为非常满意,想充分了解其背后的机制,避免任何可能的误操作。

boost::filesystem::path 有一个来自 string_type 的隐式转换构造函数,定义为 std::basic_string<value_type>value_type 的定义因环境而异。值得注意的是,wchar_t 在 Windows 上。这意味着 Windows、string_typestd::basic_string<wchar_t>、a.k.a。 std::wstring.

所以你的 wstring 被隐式转换为 boost::filesystem::path,它通过 operator<<.

超载打印