6.3 C++修改字符串
参考:http://www.weixueyuan.net/view/6392.html
总结:
string字符串同样可以像字符串数组那样按照下标逐一访问字符串中的每一个字符,string字符串的起始下标仍是从0开始。
erase函数可以删除string类型变量中的一个子字符串。erase函数有两个参数,第一个参数是要删除的子字符串的起始下标,第二参数是要删除子字符串的长度,如果第二个参数不指名的话则是直接从第一个参数获取起始下标,然后一直删除至字符串结束。
insert函数可以在string字符串中指定的位置插入另一个字符串,该函数同样有两个参数,第一个参数表示插入位置,第二参数表示要插入的字符串,第二个参数既可以是string变量,又可以是C风格的字符串。
replace函数可以用一个指定的字符串来替换string类型变量中的一个子字符串,该函数有三个参数,第一个参数表示待替换的子字符串的其实下标,第二个参数表示待替换子字符串的长度,第三个参数表示要替换子字符串的字符串。第三个参数同样可以是string类型变量或C风格字符串。
swap函数可以用于将两个string 类型变量的值互换。
例1:
#include <iostream>
#include <string> using namespace std; int main()
{
string s1 ;
s1 = "";
for(int i=; i<s1.length(); i++)
cout<<s1[i]<<" ";
cout<<endl;
s1[] = '';
cout<<s1<<endl;
return ;
}
在本例中我们定义了一个string类型变量s1,并给该变量赋值"1234567890",之后用for循环逐一输出每一个字符串中的字符。除了能够访问每一个字符外,修改它们同样也是允许的,例如在程序后面s1[5] = '5'语句将第6个字符修改为’5’,最后s1被修改为了"1234557890"。
除了能够逐个的去访问字符串中每一个字符外,系统还提供了一些函数方便我们操作string类型变量。
erase函数可以删除string类型变量中的一个子字符串。erase函数有两个参数,第一个参数是要删除的子字符串的起始下标,第二参数是要删除子字符串的长度,如果第二个参数不指名的话则是直接从第一个参数获取起始下标,然后一直删除至字符串结束。
例2:
#include <iostream>
#include <string> using namespace std; int main()
{
string s1, s2, s3;
s1 = s2 = s3 = "";
s2.erase();
s3.erase(, );
cout<< s1 <<endl;
cout<< s2 <<endl;
cout<< s3 <<endl;
return ;
}
程序最终运行结果:
1234567890
12345
1234590
当然,在使用erase函数时,在第一个参数没有越界的条件下,第二个参数可能会导致需要删除的子字符串越界,但实际上是不会的,函数会从以下两个值中取出一个最小值作为待删除子字符串的长度:
- 第二个参数的实参值;
- 字符串长度减去第一个参数的实参值。
其实说的简单一些,待删除字符串最多删除至字符串结尾。当然如果第一个参数直接越界了,那么函数执行会抛出异常的。
函数insert可以在string字符串中指定的位置插入另一个字符串,该函数同样有两个参数,第一个参数表示插入位置,第二参数表示要插入的字符串,第二个参数既可以是string变量,又可以是C风格的字符串。
例3:
#include <iostream>
#include <string> using namespace std; int main()
{
string s1, s2, s3;
s1 = s2 = "";
s3 = "aaa";
s1.insert(, s3);
cout<< s1 <<endl;
s2.insert(, "aaa");
cout<< s2 <<endl;
return ;
}
本例最终运行结果:
12345aaa567890
12345aaa567890
insert函数的第一个参数同样有越界的可能,如果第一个参数越界,则函数会运行异常。
replace函数可以用一个指定的字符串来替换string类型变量中的一个子字符串,该函数有三个参数,第一个参数表示待替换的子字符串的其实下标,第二个参数表示待替换子字符串的长度,第三个参数表示要替换子字符串的字符串。第三个参数同样可以是string类型变量或C风格字符串。
例4:
#include <iostream>
#include <string> using namespace std; int main()
{
string s1, s2, s3;
s1 = s2 = "";
s3 = "aaa";
s1.replace(, , s3);
cout<< s1 <<endl;
s2.replace(, , "aaa");
cout<< s1 <<endl;
return ;
}
程序运行结果如下:
12345aaa0
12345aaa0
同样的,该函数会有溢出的问题,如果第一个参数越界则会抛出异常。在第一个参数没有越界的前提下,第二个参数如果导致越界,则会选择以下两个值中的最小值作为待替换子字符串的长度:
- 第二个参数的实参值;
- 字符串长度减去第一个参数的实参值。
其实说白了,这个也就是说最多到字符串结尾的意思,这个与erase函数相同。
swap函数可以用于将两个string 类型变量的值互换,其使用方式见例5。
例5:
#include <iostream>
#include <string> using namespace std; int main()
{
string s1 = "string";
string s2 = "aaaaaa";
s1.swap(s2);
cout<< s1 <<endl;
cout<< s2 <<endl;
return ;
}
程序运行结果如下:
aaaaaa
string
6.3 C++修改字符串的更多相关文章
- python中修改字符串的几种方法
在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符.因此改变一个字符串的元素需要新建一个新的字符串.常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用join组 ...
- python学习:修改字符串大小写
修改字符串大小写 函数:title()字符串首字母大写,upper()字符串全部大写,lower()字符串全部小写. 代码举例: name = "ada lovelace"prin ...
- 4. python 修改字符串实例总结
4. python 修改字符串实例总结 我们知道python里面字符串是不可原处直接修改的,为了是原来的字符串修改过来,我们有一下方法: 1.分片和合并 >>> a='abcde' ...
- 在Linux中批量修改字符串的命令
昨天一个朋友忽然问我,在Linux下如何批量修改字符串,当时瞬间懵逼了,完全想不起来....... 今天特意的重温了一下Linux下的一些常用命令,并将这个遗忘的批量修改字符串的命令记录下来(资料来自 ...
- StringBuilder修改字符串内容,增,删,改,插
package seday01;/** * 字符串不变对象特性只针对字符串重用,并没有考虑修改操作的性能.因此String不适合频繁修改内容. * 若有频繁修改操作,使用StringBuilder来完 ...
- Go 修改字符串中的字符(中文乱码)
问题复现:修改字符串的第一个中文 先对原字符串做切片,然后进行拼接,得到新的字符串 func ModifyString(str string) string { tempStr := str[1:] ...
- String与StringBuffer和StringBuilder的根本区别(String为什么无法修改字符串长度)
从网上看了很多的信息,说的大部分是关于final修饰的原因,却没有详细的解释!根据自己收集的资料,跟大家分享一下我的观点(有错请指正).1.我们都知道在修改字符串长度的时候,StringBuffer和 ...
- 修改字符串 ToCharArray()
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 修改字符串中特定的内容,用于OpenRecovery Script
下面的是实例内容 目标是把OpenRecovery Script输入的内容进行修改 当有下面的输入:(作用是安装/emmc目录下面的update-signed.zip 刷机包) install /em ...
- Python初学之使用方法修改字符串的大小写
对于字符串,可执行的最简单的操作之一是修改其中单词的大小写. titile()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写: name.py name = "linda l ...
随机推荐
- 比对软件之STAR的使用方法
建索引 普通比对 二次比对 用于cufflinks和stringtie的比对 待续~ 参考:比对软件STAR的简单使用
- EventBus 3.0使用相关
一 引入方法 可以去github的官网中下载EventBus的相关资源 地址:https://github.com/greenrobot/EventBus 当然还有他的官方网站 http://gre ...
- vux, vue如何控制微信自带的返回按钮,让其返回其他页面?
<script> import { mapState } from 'vuex' export default{ name: 'clockFx', data () { return { } ...
- Xmanager Power Suit 6.0.0009 最新版注册激活
Xmanager Power Suit 6.0.0009 最新版注册激活 手工操作步骤Xmanger Power Suit 官方 其实有两种 .exe 文件,一个是用于试用的,在注册的时候不能直接输入 ...
- python基础之字符串以及切片等操作
1.字符类型 1.整型 int 2. str 字符串 3.bool 布尔值 4.list 表格,常用于大量数据的存储 用[ ]表示 5.tuple 元祖 ,不能发生改变()表示 6.dict 字 ...
- 暂时关闭 windows 病毒防护
- PTA L2-002 链表去重
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805072641245184 第一次做链表题,有时间多看看 解释 ...
- HDU-2767-tarjan/Kosaraju求scc
http://acm.hdu.edu.cn/showproblem.php?pid=2767 问最少添加几条边使得图为强连通. tarjan跑一下,然后对强连通分量缩点,找下此时出度为零和入度为零的点 ...
- ajax代码整理
$.ajax({ type: "post", [以POST或GET的方式请求.默认GET.PUT和DELETE也可以用,有的浏览器不支持] url: url, [请求的目的地址,须 ...
- 借助python工具从word文件中抽取相关表的定义,最后组装建表语句-非常好
借助python工具从word文件中抽取表的定义,最后组装建表语句-非常好 --如有转载请以超链接的方式注明原文章出处,谢谢大家.请尊重每一位乐于分享的原创者 1.python脚本 ## -*- co ...