在网上找了一大遍,也没有找到能用的,自己动手写了一个。VS2008开发环境,多字符集和UNICODE字符集都可用。
记录一下。以免忘记
WCHAR * mbcsToUnicode(const char *zStr)
{
int nByte;
WCHAR *zMbcsStr;
int codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP;
nByte = MultiByteToWideChar(codepage, 0, zStr, -1, NULL,0)*sizeof(WCHAR);
zMbcsStr = (WCHAR*)malloc( nByte*sizeof(zMbcsStr[0]) );
if( zMbcsStr==0 )
{
return 0;
}
nByte = MultiByteToWideChar(codepage, 0, zStr, -1, zMbcsStr, nByte);
if( nByte==0 )
{
free(zMbcsStr);
zMbcsStr = 0;
}
return zMbcsStr;
}
BOOL CompareStr(CStringA S1, CStringA S2)
{
WCHAR* wa;
WCHAR* wb;
wa = mbcsToUnicode(S1.GetBuffer());
wb = mbcsToUnicode(S2.GetBuffer());
return CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE, (LPCWSTR)wa, wcslen(wa), (LPCWSTR)wb, wcslen(wb)) - CSTR_EQUAL == 1;
}