[TOC]
string中的子函数
1、size_t
计算字符串str的(unsigned int型)长度,不包括结束符NULL,该长度最大为maxlen。 即size_t等价于unsigned int
2、std::basic_string str = "haha"
std::basic_string类模板存储且操纵类似char的对象的序列。该对象类型的性质由特性类模板std::char_traits的实例来提供,并作为std::basic_string的第二个模板参数 。
其中string是std::basic_string
3、strstr函数
strstr是C语言中的函数,作用是返回字符串中首次出现子串的地址。
3-1、描述
包含文件:string.h 函数名: strstr 函数原型:
extern char *strstr(char *str1, const char *str2);
语法:
* strstr(str1,str2)
str1: 被查找目标 string expression to search. str2: 要查找对象 The string expression to find.
返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。 例子:
char str[]="1234xyz";
char *str1=strstr(str,"34");
cout << str1 << endl;
显示的是: 34xyz
3-2、实现方式
char *strstr(const char *s1,const char *s2)
{
int len2;
if(!(len2=strlen(s2)))//此种情况下s2不能指向空,否则strlen无法测出长度,这条语句错误
return(char*)s1;
for(;*s1;++s1)
{
if(*s1==*s2 && strncmp(s1,s2,len2)==0)
return(char*)s1;
}
return NULL;
}
//常用经典实现方法
char *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);
}
4、判断为空
成员函数empty
string str;
if (str.empty()) {
//do anything
}
成员函数size
string str;
if (str.size() == 0) {
//do saomthing
}
与空串比较
string str;
if (str == "") {
//do something
}
几种方法中,empty函数是效率最高也是最常用的一种。
5、C语言strncasecmp()函数:比较字符串的前n个字符
表头文件:#include
表头文件 #include
6、字符串查找
s.find(s1) //查找s中第一次出现s1的位置,并返回(包括0) s.rfind(s1) //查找s中最后次出现s1的位置,并返回(包括0) s.find_first_of(s1) //查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0) s.find_last_of(s1) //查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0) s.fin_first_not_of(s1) //查找s中第一个不属于s1中的字符的位置,并返回(包括0) s.fin_last_not_of(s1) //查找s中最后一个不属于s1中的字符的位置,并返回(包括0)
7、字符串截取
s.substr(pos, n) //截取s中从pos开始(包括0)的n个字符的子串,并返回 s.substr(pos) //截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回
8、字符串替换
s.replace(pos, n, s1) //用s1替换s中从pos开始(包括0)的n个字符的子串
9、strdup
strdup() 函数是c语言中常用的一种字符串拷贝库函数,一般和 free() 函数成对出现。 strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。 返回一个指针,指向为复制字符串分配的空间;如果分配空间失败,则返回NULL值。
demo见:D:\Github\Storage\c++\standard_library\string\strdup_example.cpp
10、strstr函数
strstr是C语言中的函数,作用是返回字符串中首次出现子串的地址。
10-1、简介
包含文件:string.h 函数名: strstr 函数原型:
extern char *strstr(char *str1, const char *str2);
str1: 被查找目标 string expression to search. str2: 要查找对象 The string expression to find. 返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。
10-2、例子
char str[] = "1234xyz";
char *str1 = strstr(str,"34");
cout << str1 << endl;
显示的是: 34xyz
10-3、实现方式
char *strstr(const char *s1, const char *s2)
{
int len2;
if (!(len2 = strlen(s2))) // 此种情况下s2不能指向空,否则strlen无法测出长度,这条语句错误
return (char*)s1;
for(; *s1; ++s1) {
if(*s1 == *s2 && strncmp(s1, s2, len2)==0)
return (char*)s1;
}
return NULL;
}
//常用经典实现方法
char *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);
}