比较 unicode 和 wchar_t C++:"找不到数字文字运算符"运算符" " F""



所以我有一个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?

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

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

最新更新