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

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

参考:http://blog.csdn.net/dbyoung/article/details/7716086

时间: 2025-01-11 07:17:47

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

VC中,如何将十六进制字符串转换为十进制数?

原文链接:http://blog.csdn.net/bennyfun79/article/details/6934843 在程序中,我们有时需要将一个十六进制字符串转换为十进制数字.比如: 1 char *ptr="0x11"; 2 int n=0; 3 //我们想让n等于0x11,即17 通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法: view plaincopy to clipboardprint? 1 char *ptr="123";

Linux下Steam中支持中文的办法

搜索过好几个解决方案,诸如添加skin等等,在我的ARCH机器上似乎都不行然后在搜索linux steam cjk时, 发现一个链接中有解决DOTA2显示中文不正确的问题,感觉可能有用,就参考着搞定了这个事情 链接: https://cubarco.org/blog/2015/05/dota2-blocky-cjk-fonts-workaround/#fn:1 解决办法: 创建xxx-font-config.conf,内容见下 <?xml version="1.0"?> &

设置Xshell中支持中文

执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式.要让Xshell不显示乱码,则要将编码方式改为UTF-8. 在Xshell中[file]-> [open] -> 在打开的session中选择连接的那个,点击properties ->[Terminal],在右边translation中选择UTF-8,再重新连接服务器即可. 更有效简单的方法是(这种方式是上面设置了编码没问题的时候,依然乱码,那么说明不是Xshell的问题,这根本就是Ce

【thrift】vc中使用thrift中文字符串乱码问题解决

问题描述: VC中使用Apache thrift时,如果字符串中包含中文,会出现乱码问题,这个问题的原因是由于thrift为了达到跨语言交互而使用了UTF-8格式发送字符串,这点对java或者C#不会造成影响,但是在VC中UTF-8却很成问题.VC中的string编码随项目编码一般是multibytes或者unicode,虽然倡导使用unicode,但实际上使用multibytes多字节开发仍然广泛存在,下面的解决方案主要解决的是多字节下的乱码问题. 解决方案 1.手动转换 第一种解决方案就是在

PHP判断字符串中是否包含指定字符串,支持中文哦

RT,随手写的 1 /** 2 * 判断字符串中是否包含指定字符串 3 * @var source 源字符串 4 * @var target 要判断的是否包含的字符串 5 * @return bool 6 */ 7 function hasstring($source,$target){ 8 preg_match_all("/$target/sim", $source, $strResult, PREG_PATTERN_ORDER); 9 return !empty($strResul

JS~字符串长度判断,超出进行自动截取(支持中文)

今天一个小弟问我的问题,在文本框中输入字符,如果超出指定长度,就把它截取,要求中文等于两个字符的长度,我找一下资料,把这个功能实现了,下面是JS代码: <html> <script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script> <body> <input type="text"

在CentOS中安装中文支持

执行命令: # yum groupinstall chinese-support 修改配置文件: # vim /etc/sysconfig/i18n LANG="zh_CN.UTF-8" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en" SYSFONT="lat0-sun16"

点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法

在Ubuntu 14.04中安装了SublimeText 3之后发现既然不支持输入中文,于是在网上搜罗一下,发现很多人遇到了同样的问题,但是解决办法大该就只有一个.下面根据自身的安装及解决办法总结如下: 1. SublimeText 3的安装 安装方式有多种,本文所描述的是从官方网站上下载64位的.deb文件 ,具体为http://c758482.r82.cf2.rackcdn.com/sublime-text_build-3059_amd64.deb文件,下载后双击即会自动使用默认的安装软件安

实现翻转字符串的方法,包含水平翻转(支持中文)

面试的时候或者实际业务操作时会有需要对字符串进行翻转的要求,如:abc,翻转后为:cba 等等. 在实现基本的翻转基础上再升级一下:增加对字符串做水平翻转,如: "你好啊, 今天去哪里 abc!", 则结果为 : "abc! 今天去哪里 你好啊," 1 /** 2 * 翻转字符串,如abc你好,则cba好你. --//支持中文, 3 * 4 * @param $str 需要翻转的字符串 5 * @param bool $word 是否要水平翻转,默认为否 6 * @