Chargement de contenu UTF-8 dans Wstrings sous Windows
La lecture de fichiers Unicode (UTF-8) dans wstrings sur les plates-formes Windows nécessite une manipulation minutieuse de codage de caractères pour garantir une interprétation correcte des données texte.
Avec l'avènement de C 11, la facette std::codecvt_utf8 fournit une solution robuste pour convertir les chaînes d'octets codées en UTF-8 en chaînes de caractères UCS2 ou UCS4. Cette facette peut faciliter à la fois la lecture et l'écriture de fichiers UTF-8.
Utilisation de la facette std::codecvt_utf8
Pour utiliser efficacement la facette std::codecvt_utf8, la les étapes suivantes sont impliquées :
Un exemple d'implémentation de cette approche est décrit ci-dessous :
#include <sstream> #include <fstream> #include <codecvt> std::wstring readFile(const char* filename) { std::wifstream wif(filename); wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>)); std::wstringstream wss; wss << wif.rdbuf(); return wss.str(); }
Cette fonction peut être utilisé pour charger facilement du contenu UTF-8 dans une variable wstring.
Alternative : définir la langue C globale
Alternativement, il est possible de définir la langue C globale paramètres régionaux en UTF-8 avant de travailler avec des flux de chaînes. Cela élimine le besoin d'imprégner manuellement les tampons de flux :
std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));
Avec cette approche, tous les constructeurs de paramètres régionaux standard suivants renverront une copie des paramètres régionaux C globaux modifiés, permettant une gestion automatique de l'encodage UTF-8.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!