从C ++中的十六进制数字创建Unicode

安库·沙

我的目标是将代表英镑符号的字符转换为等效的Unicode字符串。

这是到目前为止我的测试程序的代码和输出:

#include <iostream>
#include <stdio.h>

int main()
{
    char x = 163;
    unsigned char ux = x;
    const char *str  = "\u00A3";

    printf("x: %d\n", x);
    printf("ux: %d %x\n", ux, ux);
    printf("str: %s\n", str);

    return 0;
}

输出量

$ ./pound 
x: -93
ux: 163 a3
str: £

我的目标是将未签名的char 0xA3放入代表Unicode英镑表示形式的字符串中:“ \ u00A3”

用户143690

你到底是什么问题?无论如何,您说您正在编写C ++,但是您正在使用char *以及printf和stdlib.h,因此您实际上是在编写C,而基本C不支持unicode。请记住,C语言中的char不是一个“字符”,而是一个字节,而char *不是字符数组,而是一个字节数组。当您在示例程序中打印“ \ u00A3”字符串时,您不是在打印unicode字符,而是实际上在打印那些文字字节,并且您的终端正在帮助您并将它们解释为unicode字符。它正确打印£字符的事实只是一个巧合。您可以自己查看。如果在示例程序中打印了str [0],则应该只看到“ \”字符。

如果要在C中正确使用unicode,则需要使用一个库。有很多可供选择,而我还没有使用足够的推荐它们。否则,您将需要使用C ++ 11或更高版本,并使用std :: wstring和好友。但是,您所做的并不是真正的unicode,从长远来看,它将无法正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有printf()的c中的十六进制unicode

来自分类Dev

读取十六进制数字并验证其在C中的位数

来自分类Dev

C ++中两个十六进制数字的加法

来自分类Dev

C 中的十六进制

来自分类Dev

十六进制数字的C位运算

来自分类Dev

在C ++中以十六进制读取文件

来自分类Dev

C ++中的十六进制浮点文字

来自分类Dev

连接C ++中的十六进制值

来自分类Dev

在C中以十六进制读取文件

来自分类Dev

在 C 中连接十六进制字节

来自分类Dev

在 C++ 中读取十六进制值给出了错误的数字

来自分类Dev

有没有办法检测C ++中十六进制文字中输入了多少个数字?

来自分类Dev

十六进制加法C ++

来自分类Dev

使用ascii码,'a','b','c'->八进制,十进制,十六进制数字

来自分类Dev

如何从C中的输入读取十六进制数?

来自分类Dev

如何增加/减少C中的十六进制值

来自分类Dev

在C#中以十六进制获取文件大小

来自分类Dev

在objective-c中十六进制为2的补码

来自分类Dev

C字符串中的十六进制值

来自分类Dev

printf char作为c中的十六进制

来自分类Dev

如何从C中的输入读取十六进制数?

来自分类Dev

C中十六进制的位移位(旋转)

来自分类Dev

目标C中的UIImage到十六进制转换

来自分类Dev

在C ++中逐行读取单个十六进制值

来自分类Dev

在Objective-C中十六进制为2的补码

来自分类Dev

无法在 C 中打印十六进制字节

来自分类Dev

C ++中的十六进制字符串算术

来自分类Dev

C中的二进制到十进制和十六进制

来自分类Dev

从二进制文件中获取C中变量的十六进制值