参考:http://www.weixueyuan.net/view/6392.html

总结:

  string字符串同样可以像字符串数组那样按照下标逐一访问字符串中的每一个字符,string字符串的起始下标仍是从0开始。

  erase函数可以删除string类型变量中的一个子字符串。erase函数有两个参数,第一个参数是要删除的子字符串的起始下标,第二参数是要删除子字符串的长度,如果第二个参数不指名的话则是直接从第一个参数获取起始下标,然后一直删除至字符串结束。

  insert函数可以在string字符串中指定的位置插入另一个字符串,该函数同样有两个参数,第一个参数表示插入位置,第二参数表示要插入的字符串,第二个参数既可以是string变量,又可以是C风格的字符串。  

  replace函数可以用一个指定的字符串来替换string类型变量中的一个子字符串,该函数有三个参数,第一个参数表示待替换的子字符串的其实下标,第二个参数表示待替换子字符串的长度,第三个参数表示要替换子字符串的字符串。第三个参数同样可以是string类型变量或C风格字符串。

  swap函数可以用于将两个string 类型变量的值互换。

string字符串同样可以像字符串数组那样按照下标逐一访问字符串中的每一个字符,string字符串的起始下标仍是从0开始。

例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++修改字符串的更多相关文章

  1. python中修改字符串的几种方法

    在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符.因此改变一个字符串的元素需要新建一个新的字符串.常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用join组 ...

  2. python学习:修改字符串大小写

    修改字符串大小写 函数:title()字符串首字母大写,upper()字符串全部大写,lower()字符串全部小写. 代码举例: name = "ada lovelace"prin ...

  3. 4. python 修改字符串实例总结

    4. python 修改字符串实例总结 我们知道python里面字符串是不可原处直接修改的,为了是原来的字符串修改过来,我们有一下方法: 1.分片和合并 >>> a='abcde'  ...

  4. 在Linux中批量修改字符串的命令

    昨天一个朋友忽然问我,在Linux下如何批量修改字符串,当时瞬间懵逼了,完全想不起来....... 今天特意的重温了一下Linux下的一些常用命令,并将这个遗忘的批量修改字符串的命令记录下来(资料来自 ...

  5. StringBuilder修改字符串内容,增,删,改,插

    package seday01;/** * 字符串不变对象特性只针对字符串重用,并没有考虑修改操作的性能.因此String不适合频繁修改内容. * 若有频繁修改操作,使用StringBuilder来完 ...

  6. Go 修改字符串中的字符(中文乱码)

    问题复现:修改字符串的第一个中文 先对原字符串做切片,然后进行拼接,得到新的字符串 func ModifyString(str string) string { tempStr := str[1:] ...

  7. String与StringBuffer和StringBuilder的根本区别(String为什么无法修改字符串长度)

    从网上看了很多的信息,说的大部分是关于final修饰的原因,却没有详细的解释!根据自己收集的资料,跟大家分享一下我的观点(有错请指正).1.我们都知道在修改字符串长度的时候,StringBuffer和 ...

  8. 修改字符串 ToCharArray()

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. 修改字符串中特定的内容,用于OpenRecovery Script

    下面的是实例内容 目标是把OpenRecovery Script输入的内容进行修改 当有下面的输入:(作用是安装/emmc目录下面的update-signed.zip 刷机包) install /em ...

  10. Python初学之使用方法修改字符串的大小写

    对于字符串,可执行的最简单的操作之一是修改其中单词的大小写. titile()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写: name.py name = "linda l ...

随机推荐

  1. gooreplacer 很好用

    国内上 StackOverflow, hackernews 之类的站点会慢. 因为页面里有链接指向 google 谷歌, 会被墙. 于是拖累了整个页面的显示. gooreplacer 可以把这些被墙连 ...

  2. 实例对比 hibernate, spring data jpa, mybatis 选型参考

    原文: 最近重构以前写的服务,最大的一个变动是将mybatis切换为spring data jpa,切换的原因很简单,有两点:第一.它是spring的子项目能够和spring boot很好的融合,没有 ...

  3. 雷林鹏分享:XML Parser

    XML Parser 所有现代浏览器都有内建的 XML 解析器. XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档 下面的 ...

  4. Hisat2 bowtie2比对结果解读(Hisat2 Alignment summary)

    RNA-seq数据的比对结果怎么解读?网上有很多人问,这里做一个大致的总结. Hisat2和bowtie2比对后产生的Alignment summary的格式是一样的,如下: Alignment su ...

  5. exam_review to M1

    1. 情态动词,尤其是can/can’t,should/shouldn’t. for example: You should have washed the wound.你应该已经洗好了伤口 Well ...

  6. 基于bootstrap模态框的日期选择器

    近来由于工作需求,以bootstrap模态框+DIV+CSS+JS做了一个适用于移动端的日期选择器,能够满足多样的需求,目前处于第一个版本,后续可能会继续更新.废话不多说,直接进入制作过程. 首先,需 ...

  7. 【调试】Idea如何远程debug之SpringBoot jar包启动

    一.Java -jar启动添加如下参数 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address= -Xdebug是通知JVM工 ...

  8. p1518 The Tamworth Two

    #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> ...

  9. bzoj4804: 欧拉心算 欧拉筛

    题意:求\(\sum_{i=1}^n\sum_{j=1}^n\phi(gcd(i,j))\) 题解:\(\sum_{i==1}^n\sum_{j=1}^n\sum_{d=1}^n[gcd(i,j)== ...

  10. python--model进阶

    一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句.  >>> Entry.objects.a ...