В C++11 представлен новый набор префиксов строковых литералов (и даже разрешены пользовательские суффиксы). Кроме того, вы можете напрямую использовать escape-последовательности Unicode для кодирования определенного символа, не беспокоясь о кодировании.
const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";
Но могу ли я также использовать escape-последовательности Unicode в строковых литералах wchar_t
? Это выглядело бы дефектом, если бы это было невозможно.
const wchar_t* sw = L"\u00DA";
Целочисленное значение sw[0]
, конечно, будет зависеть от того, что такое wchar_t
на конкретной платформе, но для всех остальных эффектов это должно быть переносимым, не так ли?
sw[0]
зависит от того, чтоwchar_t
есть на конкретной платформе, только в той степени, в какой размерwchar_t
. т.е.\u00DA
всегда должен приводить к некоторой кодировке Unicode (UTF-8, UTF-16, UTF-32) U+00DA, даже если это не обычная кодировка платформы для этого типа. - person bames53   schedule 17.10.2011