我使用utf8,必须将一个常量保存在char数组中:

const char s[] = {0xE2,0x82,0xAC, 0}; //the euro sign

但是它给我错误:
test.cpp:15:40: error: narrowing conversion of ‘226’ from ‘int’ to ‘const char’ inside { } [-fpermissive]

我必须将所有的十六进制数字都转换为char,这让我感到乏味并且不会闻起来很香。还有其他适当的方法吗?

最佳答案

char可以是signedunsigned(默认是特定于实现的)。你可能想要

  const unsigned char s[] = {0xE2,0x82,0xAC, 0};

要么
  const char s[] = "\xe2\x82\xac";

(string literalchar的数组,除非您给它加上一些前缀)

请参阅GCC的-funsigned-char(或-fsigned-char)选项。

在某些实现中,charunsigned,而CHAR_MAX是255(而CHAR_MIN是0)。在其他char -s上是signed,因此CHAR_MIN是-128,而CHAR_MAX是127(例如,Linux / PowerPC / 32位和Linux / x86 / 32位上的内容是不同的)。 AFAIK标准中没有任何内容禁止使用19位带符号的字符。

关于c++ - 如何使用十六进制数字初始化char数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53696287/

10-16 18:32