宽字符串忽略大小写比较的实现(原)
??????????????????????????????????????????????????????????????????????????????????????????????????????????? 寬字符串忽略大小寫比較的實現(原)
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????孫文濤 2008-07-24
?
在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);
}
?
?
體會:
(1) 以后如果碰到類似的問題,多用Google Code搜索;
(2) Apple Mac OS X的開發,基本的C/C++函數的查詢在這個網頁,我平時需要反復查詢C/C++ API,所以這個網站比較實用的。
http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/index.html#//apple_ref/doc/framework/manpages
?
轉載于:https://www.cnblogs.com/SunWentao/archive/2008/07/24/1250924.html
總結
以上是生活随笔為你收集整理的宽字符串忽略大小写比较的实现(原)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAC地址
- 下一篇: 安装 sql server 2005 c