// 把宽字符转化为ANSI字符串
WideCharToMultiByte( CP_ACP, 0, lpcwStr, -1, lpStr, sizeof(lpStr), NULL, NULL );
// 把ANSI字符串转化为宽字符
MultiByteToWideChar( CP_ACP, 0, lpcStr, -1, lpwStr, sizeof(lpwStr) );
int <— _ttoi <— CString
double <— _tcstod <— CString
CString <— .Format <— int
CString <— .Format <— double
为支持Unicode做准备,除个别必须使用 char 或 char* 的地方外,
其它地方请依照如下标准:
1.字符串类型尽量用CString
2.字符类型使用 TCHAR
3.字符串数组用 TCHAR[]
4.字符串指针用 TCHAR*
5.常量字符串指针用 const TCHAR*
6.字符串常量和字符常量加宏 _T
特别的:
1>CString::Format(_T("..."),...)//要加_T
2>LPTSTR 等等被多次嵌套定义过的宏尽量少用,用基础类型 const TCHAR*(或TCHAR*)替代;
3>为TCHAR*类型指针分配 N-1 个字符的空间: TCHAR* pbuffer = new TCHAR[ N*sizeof(TCHAR) ];
常用字符串函数,须使用支持Unicode/Ansi的宏函数替换前者:
Ansi字符串函数 Unicode/Ansi宏函数 功能说明
strcpy _tcscpy 字符串拷贝
strcat _tcscat 字符串连接
strlen _tcslen 求字符串长度
strcmp _tcscmp 字符串比较
atof _tcstod (注) 字符串转换为double
atoi _ttoi 字符串转换为int
注:上表中 _tcstod 和 atof用法不同,不能直接替换。
LPCTSTR 使用UELPCTSTR代替
std::string 使用UeStdString代替
这个需要加ShareHeader.h头文件
#ifdef UNICODE
typedef std::wstring UeStdString;
#define UELPCSTR LPCWSTR
#else
typedef std::string UeStdString;
#define UELPCSTR LPCTSTR
#endif