宽字符串忽略大小写比较的实现
在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
本文介绍了一种在Mac机器平台上实现宽字符串忽略大小写比较的方法,通过复制字符串、转换为小写并使用wcscmp函数进行比较。


1427

被折叠的 条评论
为什么被折叠?



