构造一个string的其他方法:

1string s1(cp, n),cp为c风格数组名或一个指向C风格数组的指针,则执行的操作为拷贝从cp开始包括cp在内的接下来n个字符给s1,n的默认值为sizeof(cp)/sizeof(int、char)。可以自由设定第一个参数(cp+1, cp+2,)

2string s2(s, pos, len), s为一个string类型字符串,则执行的操作是将从下标为pos的字符开始,把包括s[pos]在内的往后len个字符拷贝给s2.   pos必须小于等于s.size(),否则构造函数的行为未定义,len的默认值为s.size() – pos,即string s3(s, pos)默认为拷贝从pos开始的所有字符,不能对第一个参数实行加减法,因为strin+int不存在

第二种方式对c风格数组也是用,string s(cp, pos, len), 则将cp拷贝给一个string 字符串之后再来执行操作(即相当于执行string s(string(cp), pos, len)。Ps:n<cp.size(),但是第一种方式对string类型字符串却不适用,因为string类型不能转换成c风格类型。

c风格数组的数组名相当于是一个指向该数组的指针,而string类型字符串则是一个类,类名不能当成一个指向该字符串的指针。

3string s3 = s.substr(pos, n),     s.substr(pos,n)返回一个string,包含从pos开始的n个字符的拷贝。Pos的默认值为0,n的默认值为s.size() – pos, 急拷贝从pos开始的所有内容。Pos同样不能大于s.size(),否则会抛出一个out_of_rangge异常。

改变string的其他方法:

s.insert(pos, n, ch), 在位置pos之前插入n个ch字符

s.insert(s.size(), 5, ‘!’)            //在s末尾插入5个感叹号
s.erase(pos, n);从pos开始删除n个字符

s.erase(s.size(), 5);        //从s删除最后5个字符 

c风格:

s.assign(cstr, n)            //将cstr的前n个字符赋值给s,n必须小于等于数组中的字符数

s.insert(pos, cstr)         //在位置pos之前插入cstr

string:

s.insert(pos, s2);    //在s中位置pos之前插入s2的拷贝(最先插入的是s2的第一个字符)

s.insert(pos1, s2, pos2, strlen)     //在s[pos1]之前插入s2中s[pos2]开始的strlen个字符

修改string的操作:

s.insert(pos, args)

在pos之前插入args指定的字符。Pos可以是一个下标或一个迭代器。接受下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。

s.erase(pos, len)

删除从位置pos开始的len个字符。如果第二个参数被省略,则删除从pos开始直至s末尾的所有字符,相当于len的默认值为s.size()-pos。返回一个指向s的引用。

s.assign(args)

将s中的字符替换为args指定的字符,返回一个指向s的引用

s.append(args)

将args指定字符追加到s。返回一个指向s的引用。

s.replace(range, args)

删除S中范围range内的字符,替换为args指定的字符。Range或者是一个下标和一个长度,或者是一对指向s的迭代器。返回一个指向S的引用

args可以是下列形式之一:append和 assugn可以使用所有形式

str不能与s相同,迭代器b和e不能指向s

str                               字符串str

str, pos, len                  str中从pos开始最多len个字符

cp, len                         cp之指向的字符数组的前(最多)len个字符

cp                               cp指向的以空字符结尾的字符数组

n, c                              n个字符c

b, e                             迭代器b和 e指定的范围内的字符

初始化列表                 花括号保卫的,以逗号分隔的字符列表

Replace和insert所允许的args形式依赖于range和pos是如何指定的。

Replace

(pos,len,args)

Replace

(b, e, args)

Insert

(pos, args)

Insert

(iter, args)

Args

可以是

str

str, pos, len

cp, len

cp

n, c

B2, e2

初始化列表

(该表摘自C++ primer 第五版 P323)

构造和改变一个string的其他方法的更多相关文章

  1. 关于如何来构造一个String类

    今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其 ...

  2. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  3. cb17a_c++_构造string对象的方法

    cb17a_c++_构造string对象的方法string sstring s(s2)string s("value")string s(n,'c')string s(b,e) / ...

  4. 《java入门第一季》之类(String类常见方法小叙)

    String类下面的构造方法和一些常见的方法: /* * 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,可以知道 * A:字符串字面值"abc&quo ...

  5. 利用final定义方法:这样的方法为一个不可覆盖的方法。

      常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值.   利用final定义方法:这样的 ...

  6. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  7. java String 中 intern方法的概念

    1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...

  8. 使用Unity拦截一个返回Task的方法

    目标 主要是想为服务方法注入公用的异常处理代码,从而使得业务代码简洁.本人使用Unity.Interception主键来达到这个目标.由于希望默认就执行拦截,所以使用了虚方法拦截器.要实现拦截,需要实 ...

  9. String使用equals方法和==分别比较的是什么?

    equals方法和==的区别   首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = &quo ...

随机推荐

  1. 蓝眼睛与红眼睛(The blue-eyed islanders puzzle)

    澳大利亚的华裔数学神童陶哲轩曾在网上贴出来一个问题 The blue-eyed islanders puzzle 让大家思考,逗大家玩儿. 说一个岛上有100个人,其中有5个红眼睛,95个蓝眼睛.这个 ...

  2. 洛谷题解 P1292 【倒酒】

    原题传送门 题目描述 Winy是一家酒吧的老板,他的酒吧提供两种体积的啤酒,a ml和b ml,分别使用容积为a ml和b ml的酒杯来装载. 酒吧的生意并不好.Winy发现酒鬼们都非常穷.有时,他们 ...

  3. Android实战项目——家庭记账本(二)

    今天主要是对昨天做的添加账单信息的功能做了完善,实现了数据库的相关操作,如图是对已添加的账单信息的总结显示. 目前实现了通过日期进行汇总的功能,如上图中的各项item就是通过对所有账单信息进行按日期汇 ...

  4. zabbix默认监控负载取值不准确

    今天碰到个负载高引起的问题但是查看zabbix监控并没有报警,检查后发现监控取值与实际服务器内负载不一致. 使用zabbix_get命令在服务器内测试 zabbix默认模板键值 取值内容 [root@ ...

  5. excel的count、countif、sunif、if

    一.count统计数值个数 格式:count(指定区域)  , 例如:count(B2:G5) 二.countif统计数值满足条件个数 格式:COUNTIF(条件区域,指定条件)  ,例如:count ...

  6. Wannafly Winter Camp 2020 Day 7A 序列 - 树状数组

    给定一个全排列,对于它的每一个子序列 \(s[1..p]\),对于每一个 \(i \in [1,p-1]\),给 \(s[i],s[i+1]\) 间的每一个值对应的桶 \(+1\),求最终每个桶的值. ...

  7. Python安装和配置环境变量(简明教程)

    声明:借鉴Python 简明教程 安装我们在本书中提到的「Python 3」指的是 Python 版本大于或等于 Python 3.6.0. 针对Python3.6.版本:注意数据的缓存机制 # ## ...

  8. linux - 查看是否安装 JDK

    看看 是否设置了jdk环境变量: echo $JAVA_HOME: 或运行命令: java -verion 看看能否查看版本 ,能就是运行: 或者查看后台进程:ps -ef|grep java.

  9. LNMP环境配置(1)

    安装Nginx.MySQL.PHP 概念 LNMP是Linux Nginx MySQL PHP 的简写,把Nginx.MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的脚本语言. ...

  10. UVA12325-注意提高效率的思路

    题目大意:你有一个体积为N的箱子和两种数量无限的宝物.宝物1的体积为S1,价值为V1:宝物2的体积为S2,价值为V2.输入均为32位带符号的整数.你的任务是最多能装多少价值的宝物?   方法:其实也没 ...