构造和改变一个string的其他方法
构造一个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的其他方法的更多相关文章
- 关于如何来构造一个String类
今天帮着一位大二的学弟写了一个String的类,后来一想这个技术点,也许不是什么难点,但是还是简单的记录一些吧! 为那些还在路上爬行的行者,剖析一些基本的实现..... 内容写的过于简单,没有涉及到其 ...
- 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝
第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...
- cb17a_c++_构造string对象的方法
cb17a_c++_构造string对象的方法string sstring s(s2)string s("value")string s(n,'c')string s(b,e) / ...
- 《java入门第一季》之类(String类常见方法小叙)
String类下面的构造方法和一些常见的方法: /* * 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,可以知道 * A:字符串字面值"abc&quo ...
- 利用final定义方法:这样的方法为一个不可覆盖的方法。
常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值. 利用final定义方法:这样的 ...
- JavaScript中String对象的方法介绍
1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...
- java String 中 intern方法的概念
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- 使用Unity拦截一个返回Task的方法
目标 主要是想为服务方法注入公用的异常处理代码,从而使得业务代码简洁.本人使用Unity.Interception主键来达到这个目标.由于希望默认就执行拦截,所以使用了虚方法拦截器.要实现拦截,需要实 ...
- String使用equals方法和==分别比较的是什么?
equals方法和==的区别 首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用.这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = &quo ...
随机推荐
- linux中 nodejs 安装 sqlite3 出现的问题
错误代码类似:Error: Cannot find module '/root/QuickNote/node_modules/sqlite3/lib/binding/node-v57-linux-x6 ...
- Python学习课程零基础学Python
python学习课程,零基础Python初学者应该怎么去学习Python语言编程?python学习路线这里了解一下吧.想python学习课程?学习路线网免费下载海量python教程,上班族也能在家自学 ...
- Centos7下安装包方式安装MySQL
安装包下载地址:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar 第一步:在 /h ...
- Swift -POP( 面向协议编程)与OOP(面向对象编程)
面向协议编程(Protocol Oriented Programming,简称POP),是Swift的一种编程范式,Apple于2015年WWDC提出的,如果大家看Swift的标准库,就会看到大量PO ...
- opencv —— boxFilter、blur、GaussianBlur、medianBlur、bilateralFilter 线性滤波(方框滤波、均值滤波、高斯滤波)与非线性滤波(中值滤波、双边滤波)
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像与处理中不可缺少的操作. 邻域算子,指利用给定像素及其周围的像素值,决定此像素的最终输出值的一种算子.线性邻域滤波器就是一种常 ...
- JN_0011:改变PPT的页面尺寸,并导出图片
1,改变尺寸 设计 -- 幻灯片大小 -- 自定义大小 2,导出图片 另存为 JPG 图片
- 动手实现一个同步器(AQS)
在多线程情景下,如果不会某一共享变量采取一些同步机制,很可能发生数据不安全现象,比如购买车票时,当多个人购买时,不加锁就会产生多人买同一张票的现象,显然这是不可取的.所以要有一种同步机制,在某一时刻只 ...
- jQuery笔记(六)jQuery之Ajax
jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对 ...
- 曼孚科技:AI算法领域常用的39个术语(上)
算法是人工智能(AI)核心领域之一. 本文整理了算法领域常用的39个术语,希望可以帮助大家更好地理解这门学科. 1. Attention 机制 Attention的本质是从关注全部到关注重点.将有限 ...
- ASP.NET常用内置对象(三)Server
Server对象是HttpServerUtility的一个实例,也是上下文对象HttpContext的一个属性,提供用于处理Web请求的Helper方法. Server.MapPath("& ...