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_type
是 std::basic_string<wchar_t>
、a.k.a。 std::wstring
.
所以你的 wstring
被隐式转换为 boost::filesystem::path
,它通过 operator<<
.
超载打印
最近刚开始使用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_type
是 std::basic_string<wchar_t>
、a.k.a。 std::wstring
.
所以你的 wstring
被隐式转换为 boost::filesystem::path
,它通过 operator<<
.