字元串操作( 四 )

2、字元串交换函式swap() 交换两个字元串的内容,用法如下:# include <iostream># include <string>using namespace std;int main(){           string str1 = "yesterday once more";           string str2 ("my heart go on");           str2.swap(str1);           cout<<str1<<endl; // = my heart go on         cout<<str2<<endl; // = yesterday once more         getchar();           return 0;} 3、字元串增加函式+=,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’);//这个函式只能增加单个字元4、字元串插入函式insert() 是插入字元*,也就是在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靠近 。5、字元串删除函式erase() 是删除字元串,用法如下:s.erase(13);//从索引13开始往后全删除 s.erase(7,5);//从索引7开始往后删5个 6、字元串替换函式replace()是替换字元串,用法如下:string s=”il8n”; s.replace(1,2,”nternationalizatio”);//从索引1开始的2个替换成后面的 C_string s = internationalization 7、字元串比较==,!=,<,<=,>,>=,compare() 这些函式用来比较字元串。C ++字元串支持常见的比较操作符(>,>=,<,<=,==,!=),甚至支持string与C-string的比较(如 str<”hello”) 。在使用>,>=,<,<=这些操作符的时候是根据“当前字元特性”将字元按字典顺序进行逐一得比较 。字典排序靠前的字元小,比较的顺序是从前向后比较,遇到不相等的字元就按这个位置上的两个字元的比较结果确定两个字元串的大小 。另一个功能强大的比较函式是成员函式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”比较 。