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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值