如果你不是unicode环境,
char* 不是用CString填进去的,应该是这样
CString szParA;
CString szParB;
假设接口是:
fun(char* ParA, char* parB);
那么应该写作:
fun(szParA.GetBuffer(0), szParB.GetBuffer(0);
如果是unciode的编译环境
CString szParA;
CString szParB;
假设接口是:
fun(char* ParA, char* parB);
那么需要先转换为多字节字符串,然后才可以作为参数填写进去:
如果是wchar_t转换为char接口的可以用这个函数:
BOOL MyWideChar_tToMultiByte(LPTSTR lpcwszStr, LPSTR lpOut,INT nOutSize)
{
DWORD dwMinSize = 0;
dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
if(dwMinSize > nOutSize)
{
return FALSE;
}
else
{
WideCharToMultiByte(CP_OEMCP,NULL,lpInt,-1,lpOut,nOutSize,NULL,FALSE);
return TRUE;
}
}
所以两个参数需要这么转化:
char bufA[512];//多申请点,免得溢出
char bufB[512];
MyWideChar_tToMultiByte(szParA.GetBuffer(0), bufA, sizeof(bufA));
MyWideChar_tToMultiByte(szParB.GetBuffer(0), bufB, sizeof(bufB));
经过转换后,就可以作为char*类的替代品bufA、bufB作为参数填写进去了,如下:
fun(bufA, bufB);
vs2008下几个CString转换char*的问题
最新推荐文章于 2020-02-14 16:44:03 发布