再谈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
为负数 ...小于
为零 ...等于
- 再谈string类型
- C++ 再谈string类型(4) string类型的查找
- C++9.6 再谈string类型
- String 类型
- string类型
- string类型
- String类型
- string 类型
- String类型
- String类型
- string类型
- string类型
- string类型
- string类型
- String类型
- string类型
- string类型
- string类型
- 源码推荐(2月7日):Pinterest样式的菜单 自定义展示app工作流或使用指南
- Entity Framework 6 中为数据库操作增加日志记录功能
- msql数据备份与还原
- Java String.format()的用法
- cocos2d-x 2.2 在WINDOWS中如何创建项目
- 再谈string类型
- 烟雨里,只愿与君一曲相和
- Oracle enterprise linux6.2 kickstart无人值守自动化安装
- Thread类与Runnable接口的区别
- tshark命令
- JSON remember
- mongodb安装过程与常用命令
- Android JSON格式与服务器交互 中文乱码问题
- 从ATM机到机房收费中 我理解的面向对象