Когда вы переходите от std::u16string
к, допустим, std::u32string
, std::wstring_convert
не работает, как ожидается chars
. Так как же использовать std::wstring_convert
для преобразования между UTF-16 и UTF-32, используя std::u16string
в качестве входных данных?
Например:
inline std::u32string utf16_to_utf32(const std::u16string& s) {
std::wstring_convert<std::codecvt_utf16<char32_t>, char32_t> conv;
return conv.from_bytes(s); // cannot do this, expects 'char'
}
Можно ли reinterpret_cast
на char
, как я видел в нескольких примерах?
Если вам нужно reinterpret_cast
, я видел несколько примеров, использующих размер строки в отличие от общего размера байта для указателей , Это ошибка или требование?
Я знаю, codecvt
устарела, но пока стандарт не предлагает альтернативу, он должен это сделать.