给出以下代码:
CA2T strñ("ñ");
CA2T strñ("Ñ");
不确定为什么它不能为该角色编译,但适用于:
CA2T stradiaeresis("Ä");
CA2T strodiaeresis("Ö");
CA2T strudiaeresis("Ü");
Error C3872'0xb1':标识符中不允许使用此字符
有什么方法吗?
答案 0 :(得分:3)
正如error message C3872中所述,您在标识符strñ
中使用了非法字符。法律字符的范围记录在主题Identifiers下。
要使代码编译,您将不得不使用合法的标识符名称,例如
CA2T str_latin_small_letter_n_with_tilde("ñ");
CA2T str_latin_capital_letter_n_with_tilde("Ñ");
虽然这会使代码编译,但有几个问题需要解决:
CA2T
conversion macro表示其源类型的ANSI(代码页)编码。使用ANSI编码通常是不合需要的。CA2T
转化宏指定TCHAR
作为其目标类型。今天从未有用。当Windows 98发布时,generic-text mappings停止有用。如果您的愿望清单中的意外不足,请考虑将代码更改为以下内容:
CStringW str_latin_small_letter_n_with_tilde(L"ñ");
CStringW str_latin_capital_letter_n_with_tilde(L"Ñ");
这样做显式请求Unicode字符编码(在Visual Studio的情况下为UTF-16 LE)。在绝大多数情况下,这就是你想要的。