J'ai lu quelques articles sur les meilleures pratiques pour les chaînes et l'encodage de caractères en C++, mais j'ai du mal à trouver une approche générale qui me semble raisonnablement simple et correcte. Puis-je demander des commentaires sur les points suivants? Je suis enclin à utiliser UTF-8 et UTF-32, et de définir quelque chose comme:Chaînes et codage de caractères en C++
typedef std::string string8;
typedef std::basic_string<uint32_t> string32;
La classe chaîne8 serait utilisé pour UTF-8, et ayant un type distinct est juste un rappel de l'encodage . Une alternative serait que string8 soit une sous-classe de std :: string et supprime les méthodes qui ne conviennent pas à UTF-8.
La classe string32 serait utilisée pour UTF-32 lorsqu'une taille de caractères fixe est souhaitée.
Les fonctions CPT UTF-8, utf8 :: utf8to32() et utf8 :: utf32to8(), ou encore des fonctions wrapper plus simples, seraient utilisées pour convertir entre les deux.
Notez que 'string8' est toujours du même type que' std :: string'; il a juste un nom différent. –
Quelles fonctions 'std :: basic_string' * sont * correctes pour UTF-8? – dalle
Qu'est-ce que UTF-32 vous achète sur wstring/Unicode? btw Visual Studio définit 'u16string' et' u32string'. –