My current understanding of the difference between std::string
and std::wstring
is simply the buffer\'s type; namely, char
vs wc
The difference is that the details of char
and wchar_t
are implementation defined, while the encoding of char16_t
and char32_t
are explicitly defined by the C++11 standard.
This means that wstring
is likely to store the same data as either u16string
or u32string
, but we don't know which one. And it is allowed for some odd implementation to make them all different, as the size and encoding of the old char types are just not defined by the standard.