vs默认unicode,如需要修改:属性->常规->字符集
以下是关于WideCharToMultiByte改变字宽的俩例子
如果你不是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);