Maison > Article > développement back-end > Comment lire efficacement un fichier UTF-8 dans une chaîne sous Windows ?
Accès aux données Unicode via wstring sous Windows
Lors de la manipulation de texte Unicode sous Windows, la question se pose de savoir comment lire efficacement un Unicode (UTF -8) fichier dans wstring(s). Heureusement, C 11 fournit une solution polyvalente grâce à la facette std::codecvt_utf8.
La facette codecvt_utf8 sert de pont entre les chaînes d'octets UTF-8 et les chaînes de caractères UCS2 ou UCS4, permettant des opérations de lecture et d'écriture pour le texte. et fichiers binaires UTF-8. Pour exploiter cette facette, il est recommandé de créer un objet de paramètres régionaux qui encapsule la facette UTF-8 nécessaire. Cet objet de paramètres régionaux peut ensuite être utilisé pour imprégner des tampons de flux, permettant une gestion efficace des fichiers UTF-8.
L'extrait de code suivant montre comment lire un fichier UTF-8 dans une chaîne wstring à l'aide de cette technique :
<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>
Pour utiliser cette fonction, transmettez simplement le nom du fichier comme argument et affectez la chaîne wstring renvoyée à une variable :
<code class="cpp">std::wstring wstr = readFile("a.txt");</code>
Vous pouvez également définir les paramètres régionaux C globaux sur UTF-8. en utilisant la facette codecvt_utf8 avant de travailler avec des flux de chaînes. Cela garantit que les appels au constructeur par défaut std::locale renverront la locale C globale imprégnée du codec souhaité :
<code class="cpp">std::locale::global(std::locale(std::locale::empty(), new std::codecvt_utf8<wchar_t>));</code>
Avec ce paramètre global, il n'est pas nécessaire d'imprégner explicitement les tampons de flux avec la locale, simplifiant le processus de gestion des fichiers UTF-8 dans votre code C.
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!