Unicode宽字符转化

// 把宽字符转化为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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值