c - 如何在C中找到处理char16_t的内置函数?

标签 c unicode printf char16-t

请告诉字符串操作函数的 char16_t 版本是什么

例如:

http://www.tutorialspoint.com/ansi_c/c_function_references.htm

我找到了很多引用网站,但没有人提到这一点。

特别是对于打印功能,这是最重要的,因为它帮助我验证 Manipulation 功能是否正常工作。

#include <stdio.h>
#include <uchar.h>



char16_t *u=u"α";
int main(int argc, char *argv[])
{
    printf("%x\n",u[0]); // output 3b1, it is UTF16



    wprintf("%s\n",u); //no ouput
    _cwprintf("%s\n",u); //incorrect output

    return 0;
}

最佳答案

要打印/读取/打开写入等,您需要使用 mbsrtowcs 转换为 32 位字符功能。

出于所有意图和目的,char16_t 是一种多字节表示,因此,需要使用 mbr使用此整数类型的函数。

一些答案​​使用了完全不正确的 L“前缀”。 16 位字符串需要 u"前缀"。

以下代码为您提供了使用 8、16 和 32 位字符串表示形式所需的一切。

#include <string.h>
#include <wchar.h>
#include <uchar.h>

您可以在 Google 上找到 <wchar.h> 中的程序如果您没有手册页 (UNIX)。

如果开销不是问题,Gnome.org 的 GLib 有一些很棒的代码供您使用。

char16_tchar32_t是 ISO C11 ( iso9899:2011) 扩展。

关于c - 如何在C中找到处理char16_t的内置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292179/

相关文章:

c++ - 获取特定距离的键值对数组中第二大的数字

Python克服Windows 255路径+文件名限制并归档目录

java - 韩文未出现在Apache Netbeans中

c - 循环中的打印功能仅在循环退出后打印所有内容

将负数从 String 转换为 unsigned Long

java - Java 中的 printf() 功能与 CharBuffer 或类似的东西相结合

c++ - `--defsym` 链接器标志如何将值传递给源代码?

C不兼容指针错误

C在循环中将字符串与int连接起来

Python:如何将带有\unnnn 转义的字符串转换为 Unicode 字符串?