使用USES_CONVERSION;CString向char*转换

 

USES_CONVERSION;

 info.sIP = T2A(m_listDevice.GetItemText(ltemp,0));
 info.sUserName= T2A(m_listDevice.GetItemText(ltemp,2));

 info.sPassWord=  T2A(m_listDevice.GetItemText(ltemp,3));


上表中的宏函数,其实非常容易记忆:

2好搞笑的缩写,to 的发音和 2 一样,所以借用来表示“转换为、转换到”的含义。
AANSI 字符串,也就是 MBCS。
W、OLE宽字符串,也就是 UNICODE。
T中间类型T。如果定义了 _UNICODE,则T表示W;如果定义了 _MBCS,则T表示A
Cconst 的缩写


USES_CONVERSION是ATL中的一个宏定义。用于编码转换(用的比较多的是CString向LPCWSTR转换)。通俗的说,就是你用了这个宏后,就可以用一系列的字符串转换宏,有OLE到T,T到OLE,OLE到W,W到OLE等等,非常方便。或者说,这个宏会告诉编译器,在紧接的代码中我们要用ole库中代码(如ansi   到unicode   的A2W(...))的转换宏,不加USES_CONVERSION在使用A2W会出错。

要想使用这个宏,因为它是ATL库带的,所以要加上头文件 #include <atlconv.h>。

USES_CONVERSION是ATL中的一个宏定义。用于编码转换(用的比较多的是CString向LPCWSTR转换)。在ATL下使用要包含头文件#include "atlconv.h"

使用USES_CONVERSION一定要小心,它们从堆栈上分配内存,直到调用它的函数返回,该内存不会被释放。如果在一个循环中,这个宏被反复调用几万次,将不可避免的产生stackoverflow。




/------------------------------------------------------------Unicode下CString转char数组---------------------------------------------------------------------/

    USES_CONVERSION;
    memcpy_s(struDevInfo.struIP,csDeviceIp.GetLength(),T2A(csDeviceIp.GetBuffer()),csDeviceIp.GetLength());


/------------------------------------------------------------Unicode下char* char数组转CString---------------------------------------------------------------------/

char *pChar = "liuxijiao计算机网络";
USES_CONVERSION;
CString str = A2T(pChar);


char *pChar = "liuxijiao计算机网络";
USES_CONVERSION;
CString str = A2W(pChar);





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值