为了账号安全,请及时绑定邮箱和手机立即绑定

如何在C ++中打印Unicode字符?

如何在C ++中打印Unicode字符?

C++
交互式爱情 2019-08-08 16:30:38
如何在C ++中打印Unicode字符?我正在尝试打印俄语“ф”(U + 0444 CYRILLIC SMALL LETTER EF)字符,其代码为十进制1092。使用C ++,我该如何打印出这个角色?我会想到下面的内容会起作用,但......int main (){    wchar_t f = '1060';    cout << f << endl;}
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

要表示字符,您可以使用通用字符名称(UCN)。字符'ф'的Unicode值为U + 0444,因此在C ++中您可以将其写为'\ u0444'或'\ U00000444'。此外,如果源代码编码支持此字符,那么您可以直接在源代码中编写它。


// both of these assume that the character can be represented with

// a single char in the execution encoding

char b = '\u0444';

char a = 'ф'; // this line additionally assumes that the source character encoding supports this character

打印此类字符取决于您要打印的内容。如果您要打印到Unix终端仿真器,终端仿真器正在使用支持该字符的编码,并且该编码与编译器的执行编码匹配,那么您可以执行以下操作:


#include <iostream>


int main() {

    std::cout << "Hello, ф or \u0444!\n";

}

该程序不要求'ф'可以用单个字符表示。在OS X和大多数现代Linux安装上,这都可以正常工作,因为源代码,执行代码和控制台编码都是UTF-8(支持所有Unicode字符)。


Windows的情况比较困难,不同的权衡方式有不同的可能性。


可能是最好的,如果你不需要可移植代码(你将使用wchar_t,这应该在每个其他平台上都应该避免),就是将输出文件句柄的模式设置为仅采用UTF-16数据。


#include <iostream>

#include <io.h>

#include <fcntl.h>


int main() {

    _setmode(_fileno(stdout), _O_U16TEXT);

    std::wcout << L"Hello, \u0444!\n";

}

便携代码更难。


查看完整回答
反对 回复 2019-08-08
?
千万里不及你

TA贡献1784条经验 获得超9个赞

编译时-std=c++11,可以简单地进行编译

  const char *s  = u8"\u0444";
  cout << s << endl;


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 1860 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信