CString转char *

CString strPort,strIP;
    //CString转char *
	USES_CONVERSION;
	LPCSTR szPort=(LPCSTR)T2A(strPort);

T2A宏将CString对象(Unicode字符串)转换为char*指针(ANSI字符串)。注意,这样的转换可能导致字符集的变化,因为ANSI使用的是单字节字符,而Unicode使用的是双字节字符。

char *转 CString

USES_CONVERSION;
CString strRecvMsg = A2W(szRecvBuf);

A2W宏用于将char*(ANSI字符串)转换为CString对象(Unicode字符串)。同样,这种转换可能导致字符集的变化,具体取决于源字符串和目标字符串的字符集。

MFC---CString与char*之间的相互转换_字符转换

USES_CONVERSION是ATL中的一个宏定义。

用于编码转换(用的比较多的是CString向LPCWSTR转换)。
通俗的说,就是用了这个宏后,就可以用一系列的字符串转换宏非常方便。或者说,这个宏会告诉编译器,
在紧接的代码中我们要用OLE库中代码(如ansi到unicode的A2W(…))的转换宏,不加USES_CONVERSION在使用A2W会出错。
要想使用这个宏,因为它是ATL库带的,所以要加上头文件#include <atlconv.h>。
使用USES_CONVERSION一定要小心,它们从堆栈上分配内存,直到调用它的函数返回,
该内存不会被释放。如果在一个循环中,这个宏被反复调用几万次,将不可避免的产生stackoverflow。

在一个函数的循环体中使用A2W等字符转换宏可能会引起栈溢出