Я прочитал несколько сообщений о передовых методах кодирования строк и символов в C ++, но я немного борюсь с поиском универсального подхода, который кажется мне достаточно простым и правильным. Могу я попросить прокомментировать следующее? Я склонен использовать UTF-8 и UTF-32 и определить что-то вроде:
typedef std::string string8;
typedef std::basic_string<uint32_t> string32;
Класс string8 будет использоваться для UTF-8, а наличие отдельного типа является просто напоминанием о кодировке. Альтернативой было бы, чтобы string8 был подклассом std :: string и удалил методы, которые не совсем подходят для UTF-8.
Класс string32 будет использоваться для UTF-32, когда фиксированный размер символа равен желательно.
Функции CPP UTF-8, utf8 :: utf8to32 () и utf8 :: utf32to8 (), или даже более простые функции-оболочки, будут использоваться для преобразования между ними.