字符串相关心得

1.有一个字符串,如何判断这个字符串中是否含有某个字符串?

答:比如string str = “abcdffdf.pdf”;如何判断这个字符串中是否含有cd,cd出现了几次。

可以用 strstr()来判断是否存在。存在时,可以跳过第一个找到的“cd”,继续查找,以统计次数。

或者STL加上string的操作函数。

 

char * __cdecl strstr (//strstr源码
        const char * str1,
        const char * str2
        )
{
        char *cp = (char *) str1;
        char *s1, *s2;
 
        if ( !*str2 )
            return((char *)str1);
 
        while (*cp)
        {
                s1 = cp;
                s2 = (char *) str2;
 
                while ( *s1 && *s2 && !(*s1-*s2) )
                        s1++, s2++;
 
                if (!*s2)
                        return(cp);
 
                cp++;
        }
 
        return(NULL);
 
}
char * __cdecl strstr (
        const char * str1,
        const char * str2
        )
{
        char *cp = (char *) str1;
        char *s1, *s2;
 
        if ( !*str2 )
            return((char *)str1);
 
        while (*cp)
        {
                s1 = cp;
                s2 = (char *) str2;
 
                while ( *s1 && *s2 && !(*s1-*s2) )
                        s1++, s2++;
 
                if (!*s2)
                        return(cp);
 
                cp++;
        }
 
        return(NULL);
 
}
View Code

 

 
strchr ()查找某字符在字符串中首次出现的位置
strrchr()查找某字符在字符串中最后一次出现的位置
strchr函数原型:char *strchr(char * str, int ch); 
功能就是找出在字符串str中第一次出现字符ch的位置,找到就返回该字符位置的指针(也就是返回该字符在字符串中的地址的位置)
,找不到就返回空指针(就是 null)

strstr 函数原型: char * strstr(char * str1,char * str2);
功能就是找出在字符串str1中第一次出现字符串str2的位置(也就是说字符串sr1中要包含有字符串str2),
找到就返回该字符串位置的指针(也就是返回字符串str2在字符串str1中的地址的位置),找不到就返回空指针(就是 null)。

假设字符串s ,s1 ,字符 c 
要判断s中有没有c,就用 strchr(s,c); 如有则返回1,没有就返回0 。
判断s中有没有串s1(也就是判断s1是不是s的一个子串),用 strstr(s,s1) ; 有则返回1,没有就返回0 。
 
 
posted @ 2017-07-20 14:46  Roni_i  阅读(243)  评论(0编辑  收藏  举报