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);