#include <windows.h>
#include <stdlib.h>
#include <tchar.h> //这个头文件要包含
//编译时设置两个宏UNICODE,_UNICODE都需要设置上,这一点非常重要
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpszCmdLine,
int nCmdShow)
{
TCHAR szStrW[] = TEXT("我是中国人"); //这里学习到所有字符使用TCHAR
//PTCHAR szStrW = TEXT("我是中国人"); //指针使用PTCHAR这个设置
int iLength = 0;
TCHAR szLength[256];
//PTCHAR szLength = malloc(sizeof(TCHAR[256])); //内存分配方式注意free
iLength = lstrlen(szStrW); //lstrlen 是宽字符兼容函数
//wsprintf(szLength,TEXT("%d"),iLength); //宽字符记得所有字符串使用TEXT宏来处理
_itot(iLength,szLength,10); //_itot 功能和itoa一直不过是兼容模式
MessageBox(NULL,szLength,TEXT("tt"),MB_OK);
//free(szLength);
return 0;
}
|
以上程序在VC6.0和Pelles C下编译通过。
建立程序Win32 Application 程序空的就可以,然后选择新建添加文件C++SourceFile,main.c 加入项目。
这里需要注意的是宏定义要设置,在工程文件上右键设置C/C++便签里“预处理程序定义”添加两个宏,UNICODE,_UNICODE这两个宏一定都要添加。
总结:
定义字符或字符串使用TCHAR。如:TCHAR szStr[256];
字符指针使用PTCHAR。如:PTCHAR ptStr = malloc(sizeof(TCHAR[256]);
所有设计到字符串的地方""包含的字符串都要用TEXT宏包含如:TEXT("你好吗?"); wsprintf(szStr,TEXT("%d"),10);
原有字符串函数使用加l的如lstrlen,例子看上面程序。
数字转换字符使用_itot, asic 模式使用itoa,注意看上面程序