Maison > développement back-end > C++ > Comment charger du contenu UTF-8 dans Wstrings sous Windows ?

Comment charger du contenu UTF-8 dans Wstrings sous Windows ?

Susan Sarandon
Libérer: 2024-11-06 21:35:03
original
862 Les gens l'ont consulté

How to Load UTF-8 Content into Wstrings on Windows?

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 :

  1. Créez un objet de paramètres régionaux qui encapsule les informations spécifiques à la culture et inclut la facette de conversion UTF-8.
  2. Imprégnez le tampon de flux d'un ifstream avec les informations localisées .
  3. Utilisez le tampon de flux imprégné pour lire le fichier UTF-8.

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();
}
Copier après la connexion

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>));
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal