Я прочитал несколько сообщений о лучших практиках для строк и кодировки символов на С++, но я немного борюсь с поиском подхода общей цели, который кажется мне достаточно простым и правильным. Могу ли я запросить комментарии по следующим вопросам? Я склонен использовать 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(), или даже более простые функции-обертки, будут использоваться для преобразования между ними.