宽字符串忽略大小写比较的实现

宽字符串忽略大小写比较的实现

在Mac机器平台上没有wcsicmp 或 wcscasecmp之类的函数实现对宽字符忽略大小写的比较,所以实现了好几种方法。

一个自然的思路是:

(1) wcscpy 原字符串到tmp字符串;

(2) tolower tmp字符串;

(3) 然后调用仅存的wcscmp 完成比较。

 

我曾经实现过几次这个步骤,一个是实现起来比较繁琐,效率等方面更是不好说。

今天晚上算是花了些时间,在google code中search了好些代码,终于实现了一个较好的版本。

 

复制代码
#include  < stdlib.h >    //  for wcstombs
#include  < wctype.h >    //  for towlower
#include  < wchar.h >     //  for wchar_t
#include  < stdio.h >    

int  wcscasecmp( const  wchar_t *  cs, const  wchar_t  *  ct)
{
 
while (towlower(*cs) == towlower(*ct))
   
{
      
if (*cs == 0)
         
return 0;
      cs
++;
      ct
++;
   }

   
return towlower(*cs) - towlower(*ct);
}



int  main()
{
    wchar_t mpString[] 
= L"Hello World";
    wchar_t strMpString[] 
= L"HELLO WORLD";
    
    
int ret = wcscasecmp(mpString, strMpString);
    
if(! ret)
    
{
        printf(
"Year! Equals!\n");
    }

    
else
    
{
        printf(
"Oops! Not equals!\n");
    }

    
    
// after conversion
    wprintf(L"after conversion mpString = %s \n", mpString);
    wprintf(L
"after conversion strMpString = %s \n", strMpString);
}


地址:http://www.cnblogs.com/SunWentao/archive/2008/07/24/1250924.html
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值