Maison  >  Article  >  développement back-end  >  Comment saisir des caractères chinois en C++

Comment saisir des caractères chinois en C++

下次还敢
下次还敢original
2024-05-09 04:12:20287parcourir

Il existe trois façons de saisir des caractères chinois en C++ : Utilisez le flux std::wcin, qui est spécialement utilisé pour saisir des caractères multi-octets. Utilisez cin.imbue() pour associer le flux à un paramètre régional spécifique, tel que zh_CN.UTF-8. Convertissez les caractères chinois non codés UTF-8 en caractères larges à l'aide d'une fonction de conversion personnalisée.

Comment saisir des caractères chinois en C++

Comment saisir des caractères chinois en C++

Introduction :
La saisie de caractères chinois en C++ nécessite de gérer le codage des caractères multi-octets. Cet article explorera les méthodes courantes, notamment l'utilisation de std::wcin, cin.imbue() et des fonctions de conversion personnalisées.

Utilisation de std::wcin :
std::wcin stream est utilisé pour saisir des caractères larges, c'est-à-dire des caractères multi-octets. Il peut recevoir des caractères chinois codés en UTF-16 ou UTF-32.

<code class="cpp">#include <iostream>

int main() {
  wchar_t ch;
  std::wcin >> ch;
  std::cout << ch << std::endl;
  return 0;
}</code>

Utilisation de cin.imbue() : La fonction
cin.imbue() peut associer un flux à une locale spécifique qui spécifie l'encodage des caractères. Pour la saisie de caractères chinois, vous pouvez utiliser zh_CN.UTF-8 ou d'autres paramètres régionaux prenant en charge le codage UTF-8.

<code class="cpp">#include <iostream>
#include <locale>

int main() {
  std::cin.imbue(std::locale("zh_CN.UTF-8"));
  char ch;
  std::cin >> ch;
  std::cout << ch << std::endl;
  return 0;
}</code>

Utilisez la fonction de conversion personnalisée :
Pour les caractères chinois non codés en UTF-8, vous pouvez utiliser la fonction de conversion personnalisée pour convertir les caractères multi-octets en caractères larges. Prenons l'exemple du codage GB2312 :

<code class="cpp">#include <iostream>
#include <codecvt>

std::wstring gb2312_to_wstring(const char* gb2312) {
  std::codecvt_utf8<wchar_t> cvt;
  std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
  return conv.from_bytes(gb2312);
}

int main() {
  char gb2312[] = "你好";
  std::wstring wstr = gb2312_to_wstring(gb2312);
  std::wcout << wstr << std::endl;
  return 0;
}</code>

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