std::wstring
является контейнером wchar_t
.Размер wchar_t
не указан - компиляторы Windows, как правило, используют 16-битный тип, Unix-компиляторы 32-битный тип.
UTF-16 - способ кодирования последовательностейкодовых точек Unicode в последовательностях из 16-битных целых чисел.
Используя Visual Studio, если вы используете литералы широких символов (например, L"Hello World"
), которые не содержат символов за пределами BMP , выв конечном итоге с UTF-16, но в основном эти два понятия не связаны.Если вы используете символы вне BMP, std::wstring
не будет переводить суррогатные пары в кодовые точки Unicode для вас, даже если wchar_t
равно 16 битам.