我使用utf8并且必须在char数组中保存一个常量:
const char s[] = {0xE2,0x82,0xAC, 0}; //the euro sign
Run Code Online (Sandbox Code Playgroud)
但是它给了我错误:
test.cpp:15:40: error: narrowing conversion of ‘226’ from ‘int’ to ‘const char’ inside { } [-fpermissive]
Run Code Online (Sandbox Code Playgroud)
我必须将所有十六进制数字转换为char,我觉得这很乏味,并且闻起来不太好.有没有其他正确的方法这样做?
Bas*_*tch 22
char可能是signed或unsigned(默认是特定于实现).你可能想要
const unsigned char s[] = {0xE2,0x82,0xAC, 0};
Run Code Online (Sandbox Code Playgroud)
要么
const char s[] = "\xe2\x82\xac";
Run Code Online (Sandbox Code Playgroud)
(字符串文字是一个数组,char除非你给它一些前缀)
请参阅GCC的-funsigned-char (或-fsigned-char)选项.
上一些实施方式中char是unsigned与CHAR_MAX是255(和CHAR_MIN为0).别人char-s是signed如此CHAR_MIN是-128和CHAR_MAX127(和如东西都是在Linux/PowerPC的/ 32位和Linux/x86平台/ 32位不同).AFAIK标准中没有任何内容禁止19位签名字符.
| 归档时间: |
|
| 查看次数: |
31802 次 |
| 最近记录: |