VC++中Unicode下CString转char*

在进行数据库编程的过程中,需要把_variant_t类型转换成char尝试了各种方法,最后发现把他转换成CString,再有CString转换成char比较简单。

这里我们说的利用宏T2A和W2A进行转换。

顾名思义,T2A是从wchar_t到char的转换;W2A是由宽字符到ANSI字符之间的转换。

转换方式如下,首先需要声明标识符:USES_CONVERSION,然后我们在利用这2个宏进行数据类型转换

代码如下:

//UNICODE下的CString转char
USES_CONVERSION;
strcpy_s(tsc.staname,W2A((LPCTSTR)vname.lVal));
strcpy_s(tsc.parentline, W2A((LPCTSTR)vparent.lVal));

可以看到在下面这条代码中,我们先把_variant通过LPCTSTR强制类型转换转换成了CString,然后我们再利用 W2A函数将CString转换成char

W2A((LPCTSTR)vname.lVal);

正常的转换方式如下:

USES_CONVERSION;  

CString cstr = _T(“12345”);
char pbuffer = T2A(cstr);
char
pbuf = W2A(cstr);
 

0%