在Windows编程中,需要使用很多的API函数,其中有很多有字符串参数,这就涉及到了字符串处理
字符现在有两种编码方式-------ANSI和Unicode(GBK算在ANSI中),这就需要为每一种编码单独涉及一套处理函数。
C标准库就是有两种字符串函数:
一种str开头,处理ANSI字符串。
一种wcs开头,处理Unicode字符串。
Windows系统API库,也是有两种函数:
入口点都有两种:一种以A结尾,ANSI参数型函数
一种以W结尾,Unicode参数型函数
控制台型,main和wmain
GUI型,WinMain和wWinMain
这样为了处理两种字符编码,就要重新改写现有代码。很麻烦。
Microsoft提供了一种ANSI/Unicode通用的解决方法。
1.对于字符和字符串的通用类型
TCHAR 宏-----------代替char或wchar_t
TEXT() 宏------------代替“”或L“”,解决字符串编码问题
LPTSTR-------------指向TCHAR的指针(LP在64位上是长指针)
LPCTSTR-----------指向Const TCHAR的指针
2.运行库函数
_tcsXXX--------代替以前的strXXX的ANSI函数和wcsXXX的Unicdoe函数
3.系统API函数
通过定义宏,直接使用函数原型,不要后面的A或者W。
4.入口点函数
_tmain---------代替main或者wmain
_tWinMain-----代替WinMain或者wWinMain
在代码中使用Unicode字符串的方法:
通常情况下,这两个宏都需要定义。只使用运行时函数--------------定义_UNICODE宏
使用Windows函数--------------定义UNICODE宏