再谈string类型

来源:互联网 发布:房屋拍卖淘宝网 编辑:程序博客网 时间:2024/06/06 20:21

string类型也是在标准库中定义的,可以看做特殊的容器,除了一些特殊的操作外,string类型提供与vector相同的操作。同时他还有自己独有的操作,这里只介绍string所独有的操作。与vector不同的是:string不能使用front、back和pop_back操作。

1、string的构造方法

/******************************/string s1;string s2(5,'a');string s3(s2);string s4(s3.begin(),s3.end());/******************************string 其他的构造方法*/char *cp = "abcdefgh";char arr1[] = "aa";char arr2[] = {'a','a'};string s6(cp);string s7(cp,4);//s7 = "abcd"string s8(s7,1);//s8 = "bcd"从下标1开始以后的字符string s9(s7,1,2);//s9 = "bc"从下标1开始后面2个字符string s(arr1);//可以string s(arr2);//错误

2、修改string对象的其他方法(与容器共有的操作不再介绍)

 容器的修改操作主要是基于迭代器的为参数,string还支持基于下标位置的参数pos。

s.insert(pos,n,c);           //在下标pos前插入n个字符cs.insert(pos,s2);            //在下标pos前插入s2的副本s.insert(pos,s2,pos2,len);   //在下标pos前插入s2中从pos2开始的len个字符s.insert(pos,cp,len);        //在下标pos前插入cp所指的数组的前len个字符s.insert(pos,cp) //在下标pos前插入cp所指的以空字符结束的字符串;s.assign(s2);                //用s2副本替换s.assign(s2,pos2,len);     //用s2中下标pos2开始的len个字符替换ss.assign(cp,len);            //用cp指向的数组的前len个字符替换ss.assign(cp);                //用cp指向的以空字符结束的字符串替换ss.erase(pos,len);            //删除从下标pos开始的len个字符
3、只适用于string的操作
(1)获取string对象的子串

substr函数:返回string对象s的部分或者全部副本

s.substr(pos,n);                           //从下标pos开始的n个字符

s.substr(pos);

s.substr();

(2)append和replace函数

s.append(args);                         //将args串接在s的后面

s.replace(pos,len,args);             //删除pos后面的len个字符,用args串替换之    在这个版本中,args串不能为b2和e2

s.replace(b,e,args);  //删除迭代器b和e之间的字符,用args串替换之在这个版本中,args串不能为s2、pos、len2。要和前面两个参数统一

args串可以使以下几种:

s2;

s2, pos2, len2;

cp;

cp, len2;

n, c;

b2, e2;

共6个append重载版本和10个replace重载版本。

4、string类型的查找操作

s.find(args);//在s中查找args的第一次出现s.rfind(args);//在s中查找args的最后一次出现s.find_first_of(args);//在s中查找args的任意字符的第一次出现s.find_last_of(args);//在s中查找args的任意字符的最后一次出现s.find_first_not_of(args);//在s中查找第一个不属于args的字符s.find_last_not_of(args);//在s中查找最后一个不属于args的字符

每个查找操作有4个重载版本:

c, pos;                                 //在s中,从下标pos开始查找c

s2, pos;        //在s中,从下标pos开始查找string对象s2

cp, pos;     //在s中,从下标pos开始查找cp指针指向的以空字符结束的字符串

以上pos默认值都为0

cp, pos, n     //在s中,从下标pos开始,查找指针所指数组的前n个字符

典型的应用:

string num("0123456789");string name("ada4544ada");string::size_type pos = 0;while ((pos = name.find_last_of(num.pos)) != string::npos){cout<<name[pos]<<endl;++pos;}

5、string对象的比较

string类型定义了(<, <=, >, >=, ==, !=)运算按照字典顺序判断string对象的大小

除了关系操作符,string还定义了一组compare操作,用于实现字典顺序的比较。类似于C语言中的库函数strcmp。

s.compare(s2);

s.compare(pos1, n1, s2);

s.compare(pos1, n1, s2, pos2, n2);


s.compare(cp);                  //cp指向以空字符结束的字符串

s.compare(pos1, n1, cp);

s.compare(pos1, n1, cp, n2);

返回值:

为正数 s大于args所代表的string对象s2

为负数  ...小于

为零 ...等于










0 0
原创粉丝点击