gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 14:00:21 27 4
gpt4 key购买 nike

我正在尝试打印俄语“ф”(U+0444 西里尔小写字母 EF)字符,该字符被赋予十进制代码 1092 .使用 C++,我怎样才能打印出这个字符?我原以为以下内容会起作用,但是...

int main (){
wchar_t f = '1060';
cout << f << endl;
}

最佳答案

要表示字符,您可以使用通用字符名称 (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";
}

可移植代码更难。

关于c++ - 如何在 C++ 中打印 Unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12015571/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com