【发布时间】:2012-12-03 21:39:17
【问题描述】:
使用 MSVC 2010 我尝试在 C 或 C++ 模式下编译它(需要在这两种模式下都可以编译)和 这没用。为什么?我认为并在文档中发现 '\x' 将接下来的两个字符作为十六进制字符,而不是更多(使用 \X 时为 4 个字符)。
我还了解到,无论如何,在 C 源代码中没有可移植的方式来使用 ASCII 以外的字符代码,那么我该如何指定一些德语 ISO-8859-1 字符?
int main() {
char* x = "\xBCd"; // Why is this not char(188) + 'd'
}
// returns test.c(2) : error C2022: '3021' : too big for character
// and a warning with GCC
【问题讨论】:
-
unsigned char与char?char很可能已签名,在这种情况下,大于 127 的值“太大”。 -
谢谢,但没有。我也用 unsigned char 试过了。同样的错误信息。
-
@Lothar:我的意思不是纳粹,但你的意思是 ANSI C 而不是 ASCII C 对吧? ;) 另外,你是对的,没有真正的可移植方式来做 unicode。如果您使用的是大于 8 位的字符集,则需要自己指定编码。查看此帖子:stackoverflow.com/questions/1421811/…