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',若差值不为0,则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。 注意:要比较的字符包括字符串结束标志'\0',而且一旦遇到'\0'就结束比较,无论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
posted on 2016-12-09 13:08 zyz913614263 阅读(1173) 评论(0) 编辑 收藏 举报