2.4比较函数
C ++字符串支持常见的比较操作符(,=,,=,==,!=),甚至支持string与C-string的比较(如 str"hello") 。在使用,=,,=这些操作符的时候是根据"当前字符特性"将字符按字典顺序进行逐一得 比较 。字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小 。同时,string ("aaaa") string(aaaaa) 。
另一个功能强大的比较函数是成员函数compare() 。他支持多参数处理,支持用索引值和长度定位子串来进行比较 。他返回一个整数来表示比较结果,返回值意义如下:0-相等 〉0-大于 0-小于 。举例如下:
string s("abcd");
s.compare("abcd"); //返回0
s.compare("dcba"); //返回一个小于0的值
s.compare("ab"); //返回大于0的值
s.compare(s); //相等
s.compare(0,2,s,2,2); //用"ab"和"cd"进行比较 小于零
s.compare(1,2,"bcx",2); //用"bc"和"bc"比较 。
怎么样?功能够全的吧!什么?还不能满足你的胃口?好吧,那等着,后面有更个性化的比较算法 。先给个提示,使用的是STL的比较算法 。什么?对STL一窍不通?靠,你重修吧!
2.5 更改内容
这在字符串的操作中占了很大一部分 。
首先讲赋值,第一个赋值方法当然是使用操作符=,新值可以是string(如:s=ns) 、c_string(如:s="gaint")甚至单一字符(如:s=’j’) 。还可以使用成员函数assign(),这个成员函数可以使你更灵活的对字符串赋值 。还是举例说明吧:
s.assign(str); //不说
s.assign(str,1,3);//如果str是"iamangel" 就是把"ama"赋给字符串
s.assign(str,2,string::npos);//把字符串str从索引值2开始到结尾赋给s
s.assign("gaint"); //不说
s.assign("nico",5);//把’n’ ‘I’ ‘c’ ‘o’ ‘\0’赋给字符串
s.assign(5,’x’);//把五个x赋给字符串
把字符串清空的方法有三个:s="";s.clear();s.erase();(我越来越觉得举例比说话让别人容易懂!) 。
string提供了很多函数用于插入(insert)、删除(erase)、替换(replace)、增加字符 。
先说增加字符(这里说的增加是在尾巴上),函数有 +=、append()、push_back() 。举例如下:
s+=str;//加个字符串
s+="my name is jiayp";//加个C字符串
s+=’a’;//加个字符
s.append(str);
s.append(str,1,3);//不解释了 同前面的函数参数assign的解释
s.append(str,2,string::npos)//不解释了
s.append("my name is jiayp");
s.append("nico",5);
s.append(5,’x’);
s.push_back(‘a’);//这个函数只能增加单个字符 对STL熟悉的理解起来很简单
也许你需要在string中间的某个位置插入字符串,这时候你可以用insert()函数,这个函数需要你指定一个安插位置的索引,被插入的字符串将放在这个索引的后面 。
s.insert(0,"my name");
s.insert(1,str);
这 种形式的insert()函数不支持传入单个字符,这时的单个字符必须写成字符串形式(让人恶心) 。既然你觉得恶心,那就不得不继续读下面一段话:为了插 入单个字符,insert()函数提供了两个对插入单个字符操作的重载函数:insert(size_type index,size_type num,chart c)和insert(iterator pos,size_type num,chart c) 。其中size_type是无符号整数,iterator是char*,所以 , 你这么调用insert函数是不行的:insert(0,1, ’j’);这时候第一个参数将转换成哪一个呢?所以你必须这么写:insert((string::size_type)0,1,’j’)!第二种形式指 出了使用迭代器安插字符的形式,在后面会提及 。顺便提一下,string有很多操作是使用STL的迭代器的,他也尽量做得和STL靠近 。
删除函数erase()的形式也有好几种(真烦?。?替换函数replace()也有好几个 。举例吧:
推荐阅读
- sqlserver字段默认为为1,sql server字段默认为0
- oracle单独备份一条数据库,oracle数据库备份一张表
- 路由器买什么牌子的,路由器有哪些品牌
- 游戏射击怪物,射击打怪类冒险游戏
- linux777命令 linux7命令大全
- 格斗游戏直播游戏,格斗游戏直播平台
- java找人帮忙代码实现,java敲代码用什么软件
- c语言中的if函数问题 c语言中if函数的使用方法
- chatgpt完美简历,chatGpt简历筛选