Maison >développement back-end >C++ >Comment saisir des caractères chinois en C++
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++
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!