Maison > Article > développement back-end > Comment lire des fichiers Unicode UTF-8 dans Wstrings sous Windows avec C 11 ?
Dans le domaine de la programmation Windows, la tâche de récupération des données Unicode (UTF-8) d'un fichier vers une chaîne de caractères large (wstring) peut être réalisée grâce aux capacités polyvalentes fournies par la norme C 11.
Le nœud de cette solution réside dans l'utilisation de la facette std ::facette codecvt_utf8. Cette facette sert de pont entre les chaînes d'octets codées en UTF-8 et les chaînes de caractères utilisant la représentation UCS2 ou UCS4. Il détient la clé de la lecture et de l'écriture de fichiers UTF-8, englobant à la fois les formats texte et binaire.
Pour exploiter la puissance de la facette, un objet locale est généralement instancié. Cet objet encapsule des informations spécifiques à la culture sous la forme d'un ensemble de facettes qui définissent conjointement un environnement localisé spécifique. Une fois obtenu, le tampon de flux peut être imprégné de ces paramètres régionaux.
Avec un exemple méticuleusement conçu, nous démontrons l'application pratique de cette approche :
<code class="cpp">#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(); }</code>
Cette fonction ouvre gracieusement un fichier UTF-8 désigné, lit son contenu dans une chaîne wstring et renvoie la chaîne résultante.
Une autre Une option viable implique de définir les paramètres régionaux C globaux avant de s'engager dans les flux de chaînes. Cette commande garantit que toutes les invocations ultérieures du constructeur par défaut std::locale produiront des copies de la locale C globale, évitant ainsi le besoin d'imprégnation explicite du tampon de flux.
<code class="cpp">std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));</code>
Avec cette modification en place, les wstrings peuvent être lu sans effort à partir des fichiers UTF-8 :
<code class="cpp">std::wstring wstr = readFile("a.txt");</code>
Les techniques susmentionnées fournissent des moyens robustes et efficaces de gérer les fichiers Unicode (UTF-8) dans les environnements Windows, permettant aux développeurs de gérer efficacement manipuler et traiter de larges chaînes de caractères.
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!