VC中支持中文的字符串比较函数

在网上找了一大遍,也没有找到能用的,自己动手写了一个。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;
}


你可能感兴趣的:(VC中支持中文的字符串比较函数)