Maison >développement back-end >C++ >Comment convertir efficacement une chaîne C (ou un tableau de caractères) en un wstring (ou un tableau wchar_t) ?

Comment convertir efficacement une chaîne C (ou un tableau de caractères) en un wstring (ou un tableau wchar_t) ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-26 02:12:09732parcourir

How to Efficiently Convert a C   String (or char array) to a wstring (or wchar_t array)?

C Convertir une chaîne (ou char) en wstring (ou wchar_t)

Question :

Étant donné une chaîne s représentée comme un tableau de caractères et une wstring ws, comment convertissez-vous efficacement le contenu de s en ws sans déformer le contenu original ?

Réponse :

Pour résoudre ce problème, la bibliothèque standard (C 11 ) fournit des prise en charge de la conversion entre différents codages de caractères, notamment UTF-8 et UTF-16. Voici une solution robuste utilisant la bibliothèque standard :

#include <locale>
#include <codecvt>
#include <string>

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
// Convert string to wstring
std::wstring ws = converter.from_bytes(s);

Notes supplémentaires :

  • Le convertisseur codecvt_utf8_utf16 gère la conversion entre UTF-8 (utilisé dans le chaîne d'entrée s) et UTF-16 (utilisé dans la chaîne de sortie ws).
  • La classe wstring_convert fournit un moyen pratique et efficace d'effectuer ces conversions.
  • En C 17 et versions ultérieures, l'en-tête codecvt est obsolète au profit de la bibliothèque std::charconv . Cependant, la solution présentée ici devrait continuer à fonctionner dans un avenir prévisible.

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:
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