常见字符类型
- 宽字符串字面量
L"Wide string literal"
属于const wchar_t*
,采用UNICODE编码,标准C类型。 - 字符串字面量
"string literal"
属于const char*,采用ANSI编码,标准C类型。 typedef wchar_t WCHAR
,定义于winnt.h,是windows扩展的类型别名。typedef char TCHAR
和typedef WCHAR TCHAR
根据是否定义UNICODE
来确定,均定义域winnt.h,是windows扩展类型。
多字节编码和UNICODE
多字节编码和UNICODE编码都可以表达中文字符,前者使用char(一个中文字符占据两个字节,通过一个前导字节来判断,如果一个字节属于基本ASCII则采用ASCII,否则和它后面的字节共同表示一个ANSI字符),后者使用wchar_t。visual studio中默认使用了多字节编码,因此参数形参类型就是基于char
的,如果使用了L"string"
就会出现类型不兼容,比如 "const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容
。
解决办法:项目—>属性—>字符集 修改为UNICODE字符集