zoukankan      html  css  js  c++  java
  • c++ 字符串查找函数

    头文件:#include <string.h>
    
    定义函数:int strcasecmp (const char *s1, const char *s2);
    
    函数说明:strcasecmp()用来比较参数s1 和s2 字符串,比较时会自动忽略大小写的差异。
    
    返回值:若参数s1 和s2 字符串相同则返回0。s1 长度大于s2 长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0 的值。
    头文件:#include <string.h>
    
    strncmp() 用来比较两个字符串的前n个字符,区分大小写,其原型为:
        int strncmp ( const char * str1, const char * str2, size_t n );
    
    【参数】str1, str2 为需要比较的两个字符串,n为要比较的字符的数目。
    
    字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strncmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,直到字符结束标志'',若差值不为0,则将差值返回。例如字符串"Ac""ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。
    
    注意:要比较的字符包括字符串结束标志'',而且一旦遇到''就结束比较,无论n是多少,不再继续比较后边的字符。
    头文件:#include <string.h>
    
    定义函数:int memcmp (const void *s1, const void *s2, size_t n);
    
    函数说明:memcmp()用来比较s1 和s2 所指的内存区间前n 个字符。
    
    字符串大小的比较是以ASCII 码表上的顺序来决定,次顺序亦为字符的值。memcmp()首先将s1 第一个字符值减去s2 第一个字符的值,若差为0 则再继续比较下个字符,若差值不为0 则将差值返回。例如,字符串"Ac""ba"比较则会返回字符'A'(65)和'b'(98)的差值(-33)。
    
    返回值:若参数s1 和s2 所指的内存内容都完全相同则返回0 值。s1 若大于s2 则返回大于0 的值。s1 若小于s2 则返回小于0 的值。
    忽略大小写的比较、查找: strcasecmp与strcasestr
            在C语言中(‍string.h)定义了用于进行忽略大小写的字符串比较的函数strcasecmp及strncasecmp,以及用于子串查找的函数strstr,不过很遗憾的是,C及C++中并未定义strstr的“忽略大小写版本”。
            以下是strstr的一种实现形式(注意,当s2是一个空串时,直接返回了s1,而非NULL):
    const char* strstr( const char *s1, const char *s2 )   
    {
        int len2;
        if ( !(len2 = strlen(s2)) )
            return s1;
        for (; *s1; ++s1)
        {
            if ( *s1 == *s2 && strncmp( s1, s2, len2 )==0 )//如果串中包含空格,考虑使用memcmp
            return s1;
        }
        return NULL;
    } 
    
    参考strstr实现,我写了一个它的忽略大小写的版本strcasestr: 
    const char* strcasestr(const char* str, const char* subStr)
    {
        int len = strlen(subStr);
        if(len == 0)
        {
            return NULL;          /* 这里我并未照strstr一样返回str,而是返回NULL
        }
    
        while(*str)
        {
            if(strncasecmp(str, subStr, len) == 0)       /* 这里使用了可限定比较长度的strncasecmp */
            {
                return str;
            }
            str++;
        }
        return NULL;
    }

     http://baike.baidu.com/link?url=K32muTbO-oneGzlstp7NFWzj_Zzgkl56_BVAB1RgGxpkUw4tO1j57Ycz8FYVs0sgiEFS3cIyVFeHoFYK-cB-zK

  • 相关阅读:
    [转]window.location方法获取URL及window.location.assign(url)和replace(url)区别
    [转]JQuery实现图片轮播效果
    [转]MVC Checkbox
    [转]VS2010类模板更改,增加版权等等信息
    [转]【译】详解Asp.net MVC DropDownLists
    [转]JQuery.Ajax之错误调试帮助信息
    设置Html.TextBoxFor的Value值 及 去除数字无效的零及小数点
    [转]使用RDLC报表(1) (4)
    [转]ASP.NET MVC 2 模板化辅助方法
    [转]jquery实现图片延时加载
  • 原文地址:https://www.cnblogs.com/zendu/p/6149096.html
Copyright © 2011-2022 走看看