你好我正在尝试用 c++ 打印一个字符串,它不是英文的,输出总是 ????
,例如,我想打印一个韩国世界 '선배'
或泰语单词'ยิ่ง'
,简单的代码片段如下-
main(){
string name("선배");// string name("ยิ่ง");
int len=name.size();
cout<<"\n name: "<<name;
cout<<"\n length "<<len;
}
输出:
name: ??
length 2
好像我将字符串行按英文字符更改为-
string name("ab");
输出:
name: ab
length 2
更新:我还尝试了 wchar_t
,它也在打印问号。
代码-
wchar_t *a=L"อดีตรักงานไหม";
wprintf(L"sss : %s \n" , a);
我检查了项目的属性,project properties->configuration properties->general 字符集设置为“Use Unicode Charecter Set
”
谁能告诉我哪里出了问题?我怎样才能让它打印不同的语言?
问候
最佳答案
我不熟悉韩语,但一般来说你需要做两件事:
使用 std::locale 设置正确的代码页或使用 unicode(例如
std::wstring
和std::wcout
)。将您的控制台设置为可以显示这些字符的字体。 Windows 中的默认字体不能执行此操作。
如果您使用的是 Windows,您可以使用 SetCurrentConsoleFontEx 设置控制台字体
CONSOLE_FONT_INFOEX cfi;
cfi.cbSize = sizeof cfi;
cfi.nFont = 0;
cfi.dwFontSize.X = 0;
cfi.dwFontSize.Y = 16;
cfi.FontFamily = FF_DONTCARE;
cfi.FontWeight = FW_NORMAL;
wcscpy_s(cfi.FaceName, L"Consolas");
SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
如果您想独立于您的实际应用进行设置,或者您不具备上述功能的先决条件,您可以查看互联网上的不同指南,例如this one .
我不知道什么字体可以支持亚洲字符,你需要自己检查一下。任何 unicode 字体都可以。
关于c++ - 用 C++ 为非英语语言打印字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26479871/