zoukankan      html  css  js  c++  java
  • 用 _tcscmp 替代 strcmp 或 wcscmp

    转自:http://blog.csdn.net/eickandy/article/details/50081537

    好处:是可以不管是用unicode 编码还是其他 ,代码都不用改.

    C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如:

     1 在 tchar.h 定义 

    1 char *strcpy(char *strDestination, const char *strSource);    
    2 wchar_t *wcscpy(wchar_t *strDestination, const wchar_t *strSource);

    wcscpy()即为strcpy()的宽字符版本,与_T类似的,Visual C++提供了类似的同名函数:

    1 #ifdef  UNICODE     
    2     #define _tcscpy     wcscpy    
    3 #else    
    4     #define _tcscpy     strcpy    
    5 #endif  

    _tcscpy 在编译时会根据条件被替换, 如果是 ANSI工程,则使用 strcpy ,如果是UNICODE 工程,则使用wcscpy。

    详细说明:

    C++中对于数字类型的数据我们可以直接使用"=="即可比较是否相等,但是对于字符串的比较并不适用。我们可以利用以下的两个函数来比较两个字符串是否相等

    1、strcmp

          这是用于ANSI标准字符串的函数(如string和char *),此函数接受两个字符串缓冲区做为参数,如果两个字符串是相同的则返回零。否则若第一个传入的字符串的值大于第二个字符串返回值将会大于零,若传入的第一个字符串的值小于第二个字符串返回值将小于零。

    char *ch="翔翔糖糖";
    if(strcmp(ch,"翔翔糖糖")==0)
    {
        //字符串相等
    }
    else
    {
        //字符串不相等
    }

    2、wcscmp

          这个函数是strcmp所对应的Unicode系列的函数,它的使用方法和strcmp相同,它用来比较两个Unicode字符串是否相等(如wstring和wchar_t *)。

    wchar_t *ch=L"翔翔糖糖";
    if(wcscmp(ch,L"翔翔糖糖")==0)
    {
        //字符串相等
    }
    else
    {
        //字符串不相等
    }

          注:以上所介绍的比较字符串是否相等的函数对于英文来说是要区分大小写的,即使字母都相同但是大小写不同,函数也会认为这两个字符串是不同的。

           前面介绍了如何比较两个字符串是否相等,那是要区分大小写的。今天也介绍两个判断字符串是否相等的函数,不同的是它们不会区分大小写,即函数不会区分字符串的大小写是否相同,只要每个字母相同就可以了。

    1、stricmp

          这是用于ANSI标准字符串的函数(如string和char *),此函数接受两个字符串缓冲区做为参数,如果两个字符串是相同的则返回零,不区分大小写。否则若第一个传入的字符串的值大于第二个字符串返回值将会大于零,若传入的第一个字符串的值小于第二个字符串返回值将小于零。

    char *ch="AbcD";
    if(stricmp(ch,"aBCd")==0)
    {
        //字符串相等
    }
    else
    {
        //字符串不相等
    }

    2、wcsicmp

          这个函数是stricmp所对应的Unicode系列的函数,它的使用方法和stricmp相同,它用来比较两个Unicode字符串是否相等,不区分大小写(如wstring和wchar_t *)。

    wchar_t *ch=L"AbcD";
    if(wcsicmp(ch,L"aBCd")==0)
    {
        //字符串相等
    }
    else
    {
        //字符串不相等
    }

  • 相关阅读:
    对PostgreSQL的 seq scan , bitmap index scan 和 index scan 的进一步理解
    C# IEnumerable和IEnumerator的区别,如何实现
    老板运煤问题及解决方案
    快速排序和简单排序
    给定数组,查找最小的k个元素或最大的k个元素
    一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现
    C# 如何利用反射来加载程序集,并调用程序集中有关类的方法
    http 请求 header 应用分析
    templatemonster 10231 面朝大海 你听到什么?
    足球俱乐部 网站模板 附带源文件 字体
  • 原文地址:https://www.cnblogs.com/lpxblog/p/6934689.html
Copyright © 2011-2022 走看看