【发布时间】:2021-06-25 04:46:24
【问题描述】:
如果我写:
char a = 'A';
printf("%x %c", a, a);
它将产生输出“41 A”。 我写的时候也是这样
char32_t c = U'????';
printf("%x %c", c, c); //even tried %lc and %llc
它将产生输出“1f34c L”而不是预期的“1f34c ????”!
这里有什么问题吗?如何将 char16_t 和 char32_t 字符打印到标准输出?
另外,我应该使用哪个格式说明符从 scanf 获取 char16_t / char32_t 输入?
char32_t c;
scanf("%c", &c); //????
printf("%x %c", c, c);
这将产生输出“f0 �”。
【问题讨论】:
-
另一个问题中的this answer 有帮助吗?
-
@mediocrevegetable1 部分.. 但它太复杂了(使用 c32rtomb)。该工作没有简单的格式说明符吗?此外,它没有解释如何将 char32_t 与 scanf 一起使用。
-
@SouravKannanthaB 你在 Windows 上吗?
-
嗯,我明白了。也许您可以使用
wchar_t,但它在 Windows 上是 UTF-16,在 Linux 上是 UTF-32。除此之外,我不确定。我从未使用过char16_t或char32_t,也很少使用过wchar_t。 -
char32_t c = '????';=>char32_t c = U'????';
标签: c printf scanf char16-t char32-t