"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment lire des fichiers Unicode UTF-8 dans des Wstrings sous Windows avec C++11 ?

Comment lire des fichiers Unicode UTF-8 dans des Wstrings sous Windows avec C++11 ?

Publié le 2024-12-21
Parcourir:365

How to Read Unicode UTF-8 Files into Wstrings in Windows with C  11?

Lecture de fichiers Unicode UTF-8 dans des WStrings sous Windows

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.

Tirer parti de la std::codecvt_utf8 Facette

Le nœud de cette solution réside dans l'utilisation de la facette std::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.

Établissement d'un environnement localisé avec std::locale

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.

Lecture de fichiers UTF-8 avec Codecvt_utf8

Avec un exemple méticuleusement conçu, nous démontrons l'application pratique de cette approche :

#include 
#include 
#include 

std::wstring readFile(const char* filename)
{
    std::wifstream wif(filename);
    wif.imbue(std::locale(std::locale::empty(), new std::codecvt_utf8));
    std::wstringstream wss;
    wss 

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.

Approche alternative : définition des paramètres régionaux C mondiaux

Une autre option viable consiste à définir les paramètres régionaux C globaux avant de s'engager dans les flux de chaînes. Cette commande garantit que tous les appels ultérieurs du constructeur par défaut std::locale produiront des copies des paramètres régionaux C globaux, évitant ainsi le besoin d'imprégnation explicite du tampon de flux.

std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8));

Avec ceci modification en place, les chaînes wstring peuvent être lues sans effort à partir des fichiers UTF-8 :

std::wstring wstr = readFile("a.txt");

Conclusion

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 manipuler et de traiter efficacement des chaînes de caractères étendues.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3