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

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

                                                                                                                        孙文涛 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)
ExpandedBlockStart.gifContractedBlock.gif
{
 
while (towlower(*cs) == towlower(*ct))
ExpandedSubBlockStart.gifContractedSubBlock.gif   
{
      
if (*cs == 0)
         
return 0;
      cs
++;
      ct
++;
   }

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



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

    
else
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有关JAVA考试中数据库的题,javaee期末考试题库,用javaEE编写一个题库系统,要怎么做...

javaEE数据库简单问题。你插入2113数据库的时候是把5261它封装为一4102个对象插入的吗&#xff1f;1653如果封装为一个User对象版的权话(User对象有ID和LEVEL两个属性)ResultSet rs ps.executeQuery();User user new User();if(rs.hasNext()){user rs.next();}关于javaee 中j…

wince下获取mac地址的简单方法!

下&#xff0c;可以通过访问注册表获取mac地址&#xff0c;可是非常可惜的是有些系统的注册表不提供这个键值&#xff0c;另外也可以通过 DeviceIoControl这类函数获得&#xff0c;但是所有方法要么不全面&#xff0c;要么不够简单或者有些平台bsp包根本就不支持&#xff0c;我…

【转】虚拟键码

虚拟键码保存在WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP讯息的wParam参数中。此代码标识按下或释放的键。 中文名 虚拟键码 保存在 WM_KEYDOWN等 程 序 Windows程序 代码标识 按下或释放的键 目录 1 简介2 虚拟键表▪ 完整的虚拟键码表▪ 键盘的扫描码、…

循环赛日程表算法

题目&#xff1a;有n2^k个运动员要进行循环赛。现要设计一个满足以下要求的比赛日程表&#xff1a; &#xff08;1&#xff09;每个选手必须与其他n-1个选手各赛一次 &#xff08;2&#xff09;每个选手一天只能赛一次 &#xff08;3&#xff09;循环赛一共进行n-1天 解题思路&…

js有没有类似php的sleep函数,JavaScript-jQuery有没有类似sleep方法?

cronRun.sleep function(n) {for (var i0,jn*1000;i}}小飞写的function sleep(n) {var start new Date().getTime();while(true) if(new Date().getTime()-start > n) break;}貌似 Date new 的过多啊不过我在我本本上测的 好像不怎么管用&#xff0c;不知道为什么 是不是和…

GetAdaptersInfo获取MAC地址

源代码&#xff1a;#include<atlbase.h>#include<atlconv.h>#include"iphlpapi.h"#pragma comment(lib,"Iphlpapi.lib")int main(int argc,char*argv[]){PIP_ADAPTER_INFO pAdapterInfo;PIP_ADAPTER_INFO pAdapterNULL;DWORD dwRetVal0;pAdapt…

【转】Windows 窗体消息大全(速查)

阅读目录 通用窗口消息滚动条消息按钮控件消息按钮控件通知消息组合框控件消息组合框控件通知消息列表框控件消息列表框控件通知消息DDE消息(Dde.h)工具提示控件消息Rich Edit控件消息(带格式编辑控件)Listview控件消息Listview控件通知消息树控件消息树控件通知消息Header Co…

整数表示

在计算机中&#xff0c;不管程序还是数据都表示为二进制格式。对于我们平常编程常使用的整数有两种类型&#xff0c;一种是无符号整数&#xff0c;另外一种是有符号整数。 相应地&#xff0c;就有两种整数的二进制表达方式。一般我们使用的计算机都是32位,因此对两种整数的二进…

char 转wchar_t 及wchar_t转char

利用widechartomultibyte来转换的函数 通常适合于window平台上使用 #include <tchar.h>#include <windows.h>int _tmain(int argc, _tchar* argv[]){wchar_t pwstr[] l"我是中国人";wchar_t pwstr2[20];char *pcstr (char *)malloc(sizeof(char)*(2 * w…

oracle 12c sql图形化,Oracle 12c PL/SQL程序设计终极指南

Oracle 12c PL/SQL程序设计终极指南作者&#xff1a;孙风栋;王澜;郭晓惠出版日期&#xff1a;2015年06月文件大小&#xff1a;11.73M支持设备&#xff1a;&#xffe5;60.00在线试读适用客户端&#xff1a;言商书局iPad/iPhone客户端&#xff1a;下载 Android客户端&#xff1a…

CSS的语法结构

今天又看了一点书&#xff0c;哎我看书的速度可是够慢的。现摘录下来自己也增强下记忆&#xff0c;反正闲着也是闲着o(∩_∩)o...。 CSS的语法结构 CSS的语法结构由三个部分组成&#xff1a;选择符&#xff0c;(Selector)&#xff0c;属性(Porperty)和值(Value)。 使用方法…

WinCE 控制面板的创建

控制面板的组件,其实就是一个地地道道的DLL文件,所不同的是其后缀名为.CPL而已.控制面板组件对外必须要实现一个CPlApplet接口,其原型为:LONG CALLBACK CPlApplet(HWND hwndCPL,UINT message, LPARAM lParam1, LPARAM lParam2).而在此函数之中,为了使组件正常运作,我们必须要处…

oracle 存储同步,Oracle数据库知识——存储过程篇

在线QQ客服&#xff1a;1922638专业的SQL Server、MySQL数据库同步软件存储过程是一组用于完成特定功能的SQL语句&#xff0c;该语句已编译并存储在数据库中。用户通过指定存储过程的名称并提供参数(如果存储过程具有参数)来执行它。存储过程是数据库中的重要对象。任何设计良好…

【转】C++中的static_cast ,reinterpret_cast的用法和区别

转自&#xff1a;https://www.cnblogs.com/heyonggang/p/3361643.html 原文地址&#xff1a;https://www.cnblogs.com/heyonggang/p/3361643.html 用法&#xff1a;static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型&#xff0c;但没有运…

使用MvcContrib的FormHelper

MvcContrib的FormHelper提供了三大Helper Html辅助 验证HelperGrid表格Helper下载 下载后将MvcContrib.dll与MvcContrib.Samples.FormHelper.dll引用到Asp.net MVC工程 在Web.Config pages.namespaces加入以下节点 <add namespace"MvcContrib.UI.Tags"/><ad…

WinCE控制面板添加应用程序

WinCE系统中的控制面板和Windows系统中的控制面板原理是一样的&#xff0c;里面就是包含了一些应用程序。WinCE系统的控制面板由Ctlpnl.exe&#xff0c;Control.exe和一些.cpl文件组成&#xff0c;其中Ctlpnl.exe和Control.exe用于控制控制面板的文件夹显示和架构&#xff0c;而…

【转】滚动条消息(WM_VSCROLL和WM_HSCROLL)

转自&#xff1a;https://blog.csdn.net/zmq5411/article/details/6756189 &#xff08;1&#xff09;当用户单击滚动条或者是拖动滑块时&#xff0c;Windows会向窗口过程发送WM_VSCROLL消息&#xff08;垂直滚动时&#xff09;或者是WM_HSCROLL消息&#xff08;水平滚动时&am…

【转】CMMI环境下,该如何实施Agile?

“CMMI与敏捷之间是否有什么样的关系&#xff1f;是矛盾的&#xff1f;还是可融合的&#xff1f;”“在CMMI环境下如何实施敏捷&#xff1f;”自从“敏捷”诞生以后&#xff0c;此类话题就此起彼伏&#xff0c;从未停止。前几日&#xff0c;在AgileChina的讨论组中&#xff0c;…

透析WINCE的控制面板

WindowsCE是微软公司嵌入式、移动计算平台的基础&#xff0c;它是一个开放的、可升级的32位嵌入式操作系统&#xff0c;是基于掌上型电脑类的电子设备操作系统&#xff0c;它是精简的Windows 95,Windows CE的图形用户界面相当出色。Windows CE作业系统是Windows家族中最新的成员…

oracle 游标 904,如何解决Oracle数据库游标连接超出问题

如何解决Oracle数据库游标连接超出问题发布时间&#xff1a;2020-07-21 10:57:35来源&#xff1a;亿速云阅读&#xff1a;103作者&#xff1a;小猪这篇文章主要讲解了如何解决Oracle数据库游标连接超出问题&#xff0c;内容清晰明了&#xff0c;对此有兴趣的小伙伴可以学习一下…