gpt4 book ai didi

c++ - 将任意数字输出为 unicode

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:22 26 4
gpt4 key购买 nike

如何让任意数字在输出到终端时被解释为 Unicode?

例如:

#include <iostream>

int main() {
int euro_dec = 0x20AC;

std::cout << "from int: " << euro_dec
<< "\nfrom \\u: \u20AC" << std::endl;

return 0;
}

这打印:

from int: 8364
from \u: €

转义序列\u是什么意思?做号码0x20AC被解释为 Unicode?

我使用 wcout 进行了测试输出是:

from int: 8364
from \u:

最佳答案

出现在程序文本中的 Unicode 转义序列在翻译的第一阶段被转换为等效的 Unicode 字符 (2.2p1b1 [lex.phases])。这甚至发生在程序被标记化或预处理之前。

要将表示为整数的 Unicode 代码点转换为您的本地窄多字节编码,请使用 c32rtomb :

#include <cuchar>

char buf[MB_CUR_MAX];
std::mbstate_t ps{};
std::size_t ret = std::c32rtomb(buf, euro_dec, &ps);
if (ret != static_cast<std::size_t>(-1)) {
std::cout << std::string(buf, &buf[ret]); // outputs €
}

请注意 cuchar支持不佳;如果您知道您的原生窄字符串编码是 UTF-8,您可以使用 codecvt_utf8<char32_t> 但除此之外,您将不得不使用特定于平台的工具。

关于c++ - 将任意数字输出为 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24799219/

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