字符串相关

strlen()与sizeof()的区别

对于char型字符串来说

strlen()返回的是字符串结束表示“\0”之前的字符串长度,而不是数组长度。

sizeof()返回的是数组长度,也就是该数组共有多少个元素。

strcmp()函数

strcmp()函数用来比较两个字符串是否想等。假如str1<str2,返回一个小于0的数,如-1;假如str1=str2,返回0;假如str>str2,返回一个大于0的数字,如1.

字符串的赋值

char型字符串

char型字符串无法直接赋值,但可以通过调用strcpy()拷贝函数来实现目的

如:strcpy(ch1,ch2)它的作用是将长2中得字符依次复制给ch1

注:strcpy会将ch2中得所有字符,包括结束字符“\0”一起复制到ch1中去。

string型字符串

string型字符串可以直接复制如str1=str2,另外可以调用string类的赋值函数assign(),该函数可以取第二个字符串的任意字符赋给第一个字符串。

如str.assign(str2,3,1);表示从str2的第3个元素开始,也就是str2[2]开始,1表示取一个字符,也就是将str2[2]赋给str1.

字符串的合并

两个char型字符串进行合并要用到strcat()函数,strncat()函数将第二个字符串合并到第一个字符串中,因此要求第一个字符串必须保证容纳两个字符串的长度。

连个string型字符串可以用str1=str+str2进行合并。strncat(ch1,ch2,n)有三个参数,n是需要复制的字符数,这个字符数指的是需要提取第二个字符串的头几个字符连接到第一个字符串中,即可以实现部分合并。

注:对于string类型字符串,要输出可见字符,可用string类的成员函数size(),该函数的作用与strlen一样。唯一不同的是string类定义的是对象,char定义的是字符串数组是变量,对象在调用函数时要加上点运算符,而变量在调用函数时则要将自身传递导函数中去,同时由于strlen()是C函数,它不支持对象,因此string类的对象要调用它的时候要先转化为变量,然后才能使用。如:strlen(str1.c_str());首先str1来调用成员函数c_str()将自身转化为一个带"\0"的字符串数组。string类型的部分合并可以使用string类的append成员函数,如str1.append(str2,2,3);第一个参数是要合并的字符串,第二个参数是确定要复制的字符的位置,即从str2中哪个字符开始复制,第三个参数是复制字符的个数。

字符串的替换

假如想用一个char型字符串中的几个字符替换掉另一个char型字符串,那么可以使用C库函数中的strncpy,该函数的使用方法与strncat相同。

string型字符串可以使用replace函数(已被重载,它的参数有多种);

字符串的复制

对于char型字符串可以使用memmove(ch1,ch2,n)函数执行复制,参数 ch1是目的字符串,ch2是源字符串,10是复制的字符数目,memmove会将ch2开头10个字符复制到ch1中(注:若ch1长度大于复制长度,ch1中多余的字符会继续存在。)

对于string型字符串,由于string的赋值函数assign执行的功能类似于两个string型字符串的复制,因此string类不再提供复制string型字符串的函数,它提供了一个从string型字符串复制到char型字符串的copy函数

如:

string str = "abcd";
char ch[]="1234";
int n;
n=str.copy(ch,4,0);

第二个参数表示要复制的字符个数,第三个参数表示从哪个字符开始复制,即从str的第0个字符开始复制4个字符到ch中。

字符串的删除

string类成员函数erase()可以根据指定的字符串的中的位置,删除字符串中的字符,同时返回指向下一个字符的this指针。(注,该函数已被重载。)

如:

str.earse(2,2);//第一个参数表示从哪个位置开始删除,第二个参数表示是删除几个,

str.earse(2);//带一个参数表示从哪个位置开始删除,即从str[1]后面的字符全部删除。

字符串的查找

利用string类的成员函数find可实现对字符串的查找功能,该函数会返回要查找的字符在字符串中第一次出现的位置。如果没有找到就返回string::npos。npos是string提供的一个常量,用来表示不存在的位置,许多平台中npos的值都不一样。一般是-1,但不管是什么平台npos的值都不能用作数组下标。

如:

int p = str.find('w',0);//第一个参数表示在str字符串中寻找w字符,第二个参数表示从第零个位置开始查找

此外string类还有很多个查找函数,如:

find_first_not_of:找第一个与value中某值不相等的字符

find_first_of:查找第一个与value中某值相等的字符

find_last_of:查找最后一个与value中的某值相等的字符

find_last_not_of:查找最后一个与value中的所有值都不相等的字符

rfind:查找最后一个与value相等的字符(逆向查找)

使用方法与find相同。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值