USES_CONVERSION 和字节转换A2W, A2T, W2A, T2A

USES_CONVERSION 是什么?

USES_CONVERSION是ATL中的一个宏定义, 定义用于编码转换如W2A,A2W使用的一些局步变量。用于编码转换(用的比较多的是CString向LPCWSTR转换),进行类型转换时不可缺少。在ATL下使用要包含头文件#include "atlconv.h"

USES_CONVERSION它是在堆栈上分配空间的,也就是说你在你使用的函数未结束就不会被释放掉。

 

什么是多字节:

多字节是指使用多个字节(1-3)表示一个字符。(eg. gbd, utf-8, big5)

什么是宽字节:

宽字节一般是固定使用2个字节表示一个字符。(eg. unicode)

 

什么时候使用?

在程序中,一般最好使用unicode字符集显示字符,Windows的内核就是用unicode编码的,unicode字符集包含了世上大多数字符。unicode在windows下的不同本地环境下都能是正常显示。

但是在使用字符串和其他程序进程(本地进程或者远端进程)进行交互时,最好使用utf8编码字符。

原因是:utf8可以表示最多的字符,所有系统通用,且不像宽字节一样每个字符都要两个字节表示,数字和字母等都是使用一个字节表示,有时可以节省大量字符串流。

 

windows 如何进行转换:

MultiByteToWideChar 多字节转宽字节

WideCharToMultiByte 宽字节转多字节

 

ATL 给出的简单的使用宏进行调用(需要借助本地变量

头文件:include "atlconv.h

A2W

USES_CONVERSION;  

CString tmpStr;  

char*LineChar="fdsfdsa";  

const WCHAR * cLineChar = A2W(LineChar);  

tmpStr=cLineChar;  

W2A

USES_CONVERSION;  

CString tmpStr;  

WCH LineChar="fdsfdsa";  

const char* cLineChar = A2W(LineChar); 

A2T

USES_CONVERSION;  

char * pChar="char to cstring";  

CString cTemp=A2T(pChar); 

T2A

USES_CONVERSION;  

CString cTemp =_T("char to cstring");  

char * pChar=A2T(pChar);  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值