比较unicode和wchar_t C ++:`无法找到数字文字运算符'运算符“”F'`

时间:2016-03-04 18:46:11

标签: c++ unicode wchar-t

所以我有wchar_t tempc;。我想看看它是否在unicode范围000000-00007F。

这是我尝试比较值的方式:

if ((tempc < (wchar_t)000000) || (tempc > (wchar_t)00007F)) { ... 

我认为这会将unicode值000000和00007F转换为wchar_t。但我得到的错误如下:

error: invalid suffix "F" on integer constant
error: invalid digit "8" in octal constant
error: invalid suffix "FF" on integer constant
error: invalid digit "8" in octal constant 

很明显,编译器不会像00007F这样的值是unicode。我的误会是什么?我首先将它们转换为unicode(如果是这样,如何?),然后转换为wchar_t?

1 个答案:

答案 0 :(得分:1)

在C ++中,以0开头的常量值是八进制数。因此,它不能包含8和F.十六进制常量应该写0x7F。只需写下:

if ((tempc < (wchar_t)0) || (tempc > (wchar_t)0x7F)) { ...