参考: https://www.cnblogs.com/this-543273659/archive/2011/07/21/2113172.html  感谢博主

我能不用char*就不用,而使用C++标准程序库中的string类。string不必担心内存、字符长度等等的问题,并且string作为一个类,它的操作函数能够基本满足我的需要。string使用起来非常简单,我们用=赋值,用==比较是否相同,用+合并字符等等。

使用之前需要包含头文件 #include<string>

1.声明字符,调用构造函数初始化字符串

a.将strA赋值为空字符。

string strA;

b.复制字符串赋初值,将“B"赋值给strB,将strB赋值给strA。

1     string strB("B");
2 string strA(strB);

c.截取字符串,赋初值

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4 int main()
5 {
6 string strA("ABCDEF");
7 string strB(strA, 1);//从1开始截取到最后
8 cout << strB << endl;
9 string strC(strA, 1, 2);//从1开始截取2位
10 cout << strC << endl;
11 string strD(strA, 1, 20000);//从1开始截取到最后
12 cout << strD << endl;
13 // string strE(strA, 10000, 2);//错误
14 // cout << strE << endl;
15 cin.get();
16 return 0;
17 }

d.将C字符串作为strA的初值???没搞懂CString?

string strA(cstr); //将CString作为s的初值

e.将C字符串前chars_len个字符作为字符串strA的初值。???没搞懂CString?

string strA(chars,chars_len);

f.   string s(num,c) //生成一个字符串,包含num个c字符
g.  string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
h.  s.~string() //销毁所有字符,释放内存

 2.字符串操作函数

a.    赋新值=,assign()

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4 int main()
5 {
6 string strA;
7
8 strA = "A";
9 cout << strA << endl;
10
11 strA.assign("B");
12 cout << strA << endl;
13
14 cin.get();
15 return 0;
16 }

b.    交换两个字符串的内容swap()

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4 int main()
5 {
6 string strA("A");
7 string strB("B");
8 cout << strA << endl;
9 cout << strB << endl;
10
11 strA.swap(strB);
12 cout << strA << endl;
13 cout << strB << endl;
14 cin.get();
15 return 0;
16 }

c.  在尾部添加字符+=,append(),push_back()

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4 int main()
5 {
6 string strA("A");
7 string strB("B");
8
9 strA += strB;//AB
10 strA += "C"; //ABC
11 strA += "DD"; //ABCD
12 cout << strA << endl;
13
14 strA.append("E");//ABCDE
15 strA.append("F");//ABCDEF
16 strA.append("GG");//ABCDEFGG
17 cout << strA << endl;
18
19 strA.push_back('H');//添加元素 ABCDEFGGH
20 strA.push_back('I');//ABCDEFGGHI
21 strA.push_back('J');//ABCDEFGGHIJ
22 strA.push_back('J');//ABCDEFGGHIJJ
23 cout << strA << endl;
24
25 cin.get();
26 return 0;
27 }

d.  插入字符 insert()

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void main()
6 {
7 string strA = "ABCDE";
8
9 strA.insert(1, "插入"); //在A后面插入
10 cout << strA << endl;
11
12 strA.insert(0, "头部"); //在头部插入
13 cout << strA << endl;
14
15 strA.insert(strA.size(), "尾部"); //在尾部插入
16 cout << strA << endl;
17
18 cin.get();
19 }

e.  删除字符erase()、clear()

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void main()
6 {
7 string strA = "ABCD";
8 strA.erase(1, 2); //从索引1开始 删除2个字符 即删除了BC
9 cout << strA << endl;
10 strA.erase(0,strA.size()); //全部清空
11 strA.clear(); //全部清空
12 cin.get();
13 }

f.  删除字符replace()

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void main()
6 {
7 string strA = "ABCDEFG";
8 strA.replace(2, 3, "王牌飞行员"); //从索引2开始3个字节的字符全替换成"王牌飞行员"
9 //strA.replace(2, 0, "王牌飞行员");//replace()相当于insert()
10 //strA.replace(2, 0, ""); //replace()相当于erase()
11 //strA.replace(0, strA.size(), "");//replace()相当于clear()
12 cout << strA << endl;
13 cin.get();
14 }

g. 合并字符串 +

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void main()
6 {
7 string strA = "A";
8 string strB = "B";
9 strA = strA + strB + "合并";
10 cout << strA << endl;
11 cin.get();
12 }

h. 比较字符串==,!=,<,<=,>,>=,compare()

根据“当前字符特性”将字符按字典顺序进行逐一得比较。字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void main()
6 {
7 cout << "ascii,A" << int('A') << endl;
8 cout << "ascii,B" << int('B') << endl;
9
10 string strA = "A";
11 if (strA == "A") cout << "相等" << endl;
12 if (strA != "B") cout << "A不等于B" << endl;
13 if ("A" < "B") cout << "A<B" << endl;
14 if ("1299" < "13") cout << "1299<13" << endl;// 第一位相同 第二位2<3 比较结束
15
16 cin.get();
17 }

i. 返回字符数量 size(),length(),两者没有区别

 1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void main()
6 {
7 string strA = "A汉123";
8 cout << strA.size() << endl;//6
9 cin.get();
10 }

【c++】string详解的更多相关文章

  1. Java的String详解

    Java的String详解 博客分类: Java javaStringString详解常用方法  Java的String类在开发时经常都会被使用到,由此可见String的重要性.经过这次认真仔细的学习 ...

  2. Python操作redis字符串(String)详解 (三)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...

  3. [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析

    前言 上次在公司开会时有同事分享windebug的知识, 拿的是string字符串Concat拼接 然后用while(true){}死循环的Demo来讲解.其中有提及string操作大量字符串效率低下 ...

  4. String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)

    本章主要介绍String和CharSequence的区别,以及它们的API详细使用方法. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/string01. ...

  5. Java堆、栈和常量池以及相关String详解

    一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...

  6. String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别

    本章主要介绍String和CharSequence的区别,以及它们的API详细使用方法. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/string01. ...

  7. String 详解

    String String对象不可变,当对象创建完毕之后,如果内容改变则会创建一个新的String对象,返回到原地址中. 不可变优点: 多线程安全. 节省空间,提高效率. 源码: public fin ...

  8. java String 详解

    1.java语言的字符串序列是通过字符串类实现的.java提供了3个字符串类:String类.StringBuilder类和StringBuffer类.String类是不变字符串,StringBuff ...

  9. String详解

    在开发中,我们都会频繁的使用String类,掌握String的实现和常用方法是必不可少的,当然,我们还需要了解它的内部实现. 一. String的实现 在Java中,采用了一个char数组实现Stri ...

  10. C#String详解

    字符串:stringLength - 字符串的长度. TrimStart() 压缩空格即消除字符串开始空格TrimEnd() 消除结尾空格Trim() 同时消除开头和结尾空格.注:中间空格不消除,因为 ...

随机推荐

  1. Swift系列五 - 可选项

    可选项,一般也叫可选类型,它允许将值设为nil. 一.定义可选项 平时开发中,如果我们需要把一个变量置空时只需要把变量赋值一个nil即可: 上面尝试后不行,那怎么把一个变量置空呢? 答案:把变量设置可 ...

  2. word打印华文字体出现乱码

    乱码原因:打印机自带字体库支持的问题 解决方法:解决方法是修改打印机的设置,不使用打印机的字体,直接使用电脑的字体. 具体操作:控制面板-设备和打印机-选中要设置的打印机-打印首选项-图像品质-设置字 ...

  3. Nginx超详细常用功能演示,够用啦~~~

    前言 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服 ...

  4. OCR-Form-Tools项目试玩记录(二)产品评测

    这是一篇软工课程作业博客 项目 内容 这个作业属于哪个课程 北航2020春软件工程 006班(罗杰.任健 周五) 这个作业的要求在哪里 个人博客作业-软件案例分析 个人课程目标 系统地学习软件工程理论 ...

  5. input type

    input的type有: text 文本输入 password密码输入 file选择文件 radio单选按钮 checkbox复选按钮 submit对应form的action按钮 button 普通按 ...

  6. 4.启动虚拟机 设置CentOS7

    启动虚拟机 CentOS设置 1.点击箭头方向即可启动我们的VMware 2.设置语言 在第一步设置完成后,我们一直等待,即可来到语言设置界面 此处我们设置[中文] 3.设置安装信息 将下面带有[感叹 ...

  7. 完美解决MSSQL安装问题“Polybase要求安装Oracle JRE 7更新51(64位)”方案

    阅文时长 | 0.72分钟 字数统计 | 1164.8字符 主要内容 | 1.问题起因及解决方案 2.安装jdk-8u241-windows-x64 3.取消PolyBase查询服务 4.四.声明与参 ...

  8. mysql登录框注入绕过单引号匹配

    0x00 原理   网站使用正则匹配对用户名一栏传到服务器的参数进行了匹配,如果匹配到了单引号则报错 0x01 简单例子   当我们输入admin'时,网站直接报错,很有可能就是用了正则,这样我们也不 ...

  9. 驰骋CCFlow开源工作流程引擎如何设置PDF打印

    前言 经常有驰骋CCFlow爱好者朋友提问关于打印相关问题.在这篇博文中大家介绍一下工作流引擎CCFlow的HTML打印和PDF打印,针对Java版本和.NET版本有不同的操作步骤,包括开关设置.水印 ...

  10. Deepin深度应用商店和系统更新不正常的解决方法

    Deepin深度应用商店和系统更新不正常的解决方法 2020-02-04 10:25:09作者:i8520稿源:深度站 如果你的Deepin深度应用商店和系统更新不正常,可采用以下方法来解决问题. 解 ...