c++ - 用 C++ 为非英语语言打印字符串

标签 c++ string visual-studio-2010

你好我正在尝试用 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::wstringstd::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/

相关文章:

c++ - 为什么优化器会删除我的代码?

c++ - 具有特征参数的模板特化函数

c++ - 添加两个不同大小的 vector : Optimal Run-time and Optimal Memory Management

arrays - 如何将元组数组转换为字符串?

c++ - 为什么在这种情况下编译器没有消除复制构造

c++ - 按 C++ 键时随时调用函数

java - 通过在遍历数组时比较字符串来验证有效性

javascript - 从两个字符之间的字符串中提取信息

C++ 模板 : Getting wrong results (output) with MInGW

c# - 我可以建议 "Generate method stub"在 Visual C# 中存储新生成的代码的位置吗?