参考: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. 如何通过 Terminal 设置截图存储的位置

    由于截图的默认位置是存储在 desktop 上的,而 desktop 又是我们经常见的地方,有一个干净的界面对良好的电脑的体验非常重要,那么可以通过改变截图的默认的存储位置来改变.而改变这一路径需要用 ...

  2. 雷林鹏分享:使用 CSS 显示 XML

    使用 CSS 显示 XML 通过使用 CSS(Cascading Style Sheets 层叠样式表),您可以添加显示信息到 XML 文档中. 使用 CSS 显示您的 XML? 使用 CSS 来格式 ...

  3. c++-pimer-plus-6th-chapter05

    Chapter Review 1 An entry-condition loop evaluates a test expression before entering the body of the ...

  4. LeetCode--405--数字转化为十六进制数

    问题描述: 给定一个整数,编写一个算法将这个数转换为十六进制数.对于负整数,我们通常使用 补码运算 方法. 注意: 十六进制中所有字母(a-f)都必须是小写. 十六进制字符串中不能包含多余的前导零.如 ...

  5. jquery判断设备是否是手机

    //判断是否是手机 function IsMobile() { var isMobile = { Android: function () { return navigator.userAgent.m ...

  6. android--------自定义控件 之 属性篇

    上篇介绍了自定义控件的一个简单案例,本篇文章主要介绍如何给自定义控件自定义一些属性. Android 中使用自定义属性的一般步骤: 定义declare-styleable,添加attr 使用Typed ...

  7. python基础之面向对象的多继承以及MRO算法

    内容梗概: 1. python多继承 2. python经典类的MRO 3. python新式类的MRO C3算法 1.python多继承 class Shen: def fly(self): pri ...

  8. JUnit 4.0学习笔记

    JUnit命令整理 @Test(timeout=  ) : 测试时间超过范围即失败 @Test(expected=) : 申明出会发生的异常 @Before :  在每一个测试方法前执行 @After ...

  9. python记录_day31 进程同步和进程通信

    一.进程同步 1.同步锁(又叫互斥锁) 加锁的代码以后,同一时间内只能被一个进程执行 from multiprocessing import Process, Lock def fun(loc): l ...

  10. FBI树(第一次做建树题)

    试题来源 NOIP2004 普及组 问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它的结 ...