字符串相关心得
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); }
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 。