在 C 中輸入漢字可以透過三種方法:使用 std::wcin 流,專門用於輸入多位元組字元。使用 cin.imbue() 將流關聯到特定 locale,例如 zh_CN.UTF-8。使用自訂轉換函數將非 UTF-8 編碼的漢字轉換為寬字元。
如何在C 中輸入漢字
引言:
在C 中輸入漢字需要處理多位元組字元編碼。本文將探討常用的方法,包括使用 std::wcin、cin.imbue() 和自訂轉換函數。
使用 std::wcin:
std::wcin 流用於輸入寬字符,即多字節字符。它可以接收 UTF-16 或 UTF-32 編碼的漢字。
<code class="cpp">#include <iostream> int main() { wchar_t ch; std::wcin >> ch; std::cout << ch << std::endl; return 0; }</code>
使用 cin.imbue():
cin.imbue() 函數可以將流關聯到特定的 locale,該 locale 指定字元編碼。對於漢字輸入,可以使用 zh_CN.UTF-8 或其他支援 UTF-8 編碼的 locale。
<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>
使用自訂轉換函數:
對於非 UTF-8 編碼的漢字,可以使用自訂轉換函數將多位元組字元轉換為寬字元。以 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>
以上是c++中怎麼輸入漢字的詳細內容。更多資訊請關注PHP中文網其他相關文章!