提问人:KRESHANK 提问时间:4/20/2022 更新时间:4/20/2022 访问量:761
如何在 C++ 输入中允许中文字符?
How can I allow Chinese characters in C++ input?
问:
我一直在尝试通过Visual Studio 2019中的中文(简体)输入。当我输入一个英文单词时,它工作正常。为了确保控制台正确打印,我将控制台字体更改为与汉字兼容的字体。到目前为止,打印字符似乎还不是什么大问题,但是输入字符给我带来了一些麻烦。iostream
我尝试了在其他帖子中找到的几个“修复程序”,例如 or 或 ,以及这些函数的变体。在尝试调试时,我发现 ;我输入的字符被完全忽略了。setlocale(LC_ALL, "zh_CN.UTF-8")
wcin.imbue(locale("zh_CN.UTF-8"))
SetConsoleCP(UTF8)
b = L""
但是,当我从文件中读取输入时,它似乎正在运行;我可以正确地解析、操作和打印文件。
void prepare() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// Change font to something compatible with chinese
CONSOLE_FONT_INFOEX fontInfo;
fontInfo.cbSize = sizeof(fontInfo);
fontInfo.FontFamily = 54;
fontInfo.FontWeight = 300;
fontInfo.nFont = 0;
const wchar_t myFont[] = L"KaiTi";
fontInfo.dwFontSize = { 9, 30 };
copy(myFont, myFont + (sizeof(myFont) / sizeof(wchar_t)), fontInfo.FaceName);
SetCurrentConsoleFontEx(hConsole, false, &fontInfo);
setlocale(LC_ALL, "zh_CN.UTF-8");
//wcin.imbue(locale("zh_CN.UTF-8"));
//wcout.imbue(locale("zh_CN.UTF-8"));
}
简化示例代码:
#define _UNICODE
int main() {
prepare(); // Prepare console to output Chinese characters properly
wcin.imbue(locale("zh_CN.UTF-8"));
wcout.imbue(locale("zh_CN.UTF-8"));
wstring a = L"你好";
wcout << a; // Prints and displays properly
wstring b;
wcin >> b; // "你好"
wcout << b; // Nothing prints
return 0;
}
如何解决此问题?谢谢!
答: 暂无答案
评论
wcin >> b