博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++/C中常用string类的详细用法(笔记
阅读量:3949 次
发布时间:2019-05-24

本文共 4677 字,大约阅读时间需要 15 分钟。

目录

string类简介

string类是C++STL标准模板中的一种,它的用法很多,针对每种,我给出一个实例,便于理解

声明一个字符串

定义

或者说构造一个字符串,初始一个字符串,建立一个字符串,就和你建立一个数组int a[]类似,具体介绍放在代码里

Codes

#include
#include
using namespace std;int main(){
//注释不明白没关系,运行程序输出一下就明了多了 string s1();//声明一个空的字符串,就是null,s1=""; string s2("Beautiful!");//声明一个字符串s2="Beautiful"; string s3(5,'H');//输出5个H,s3="HHHHH",哈哈哈哈哈 string s4("IAmSmart",1,2);//注意,你可以把s4本身理解为一个数组 //s4[0]='I',s4[1]='A',s4[7]='t' string s5("IAmSmart",3,7);//输出 cout<<"字符串s2: "<
<

运行结果

在这里插入图片描述

求字符串的长度

简析

对于string嘛,最直接的有两种,但是对于char ch[]有1种(它们都有阔能有很多种,只是我只写知道的,读者可以在评论区补充的(* ̄︶ ̄).

string s;

s.size()//输入字符串长度
s.length()//输入字符串长度,和上面一样
char ch[100];//比如我输入ch=“ABCD”;//不包括双引号
strlen(ch);//应该为4
sizeof(ch);//应该为100

Codes

#include
#include
#include
using namespace std;const int maxn=1e5+10;int main(){
char ch[maxn];//注意,我给ch数组分配的空间1e5+10,也就说size(ch)=maxn; string str,s; int lch,lstr,ls,LM; cout<<"请输入ch[]: "; cin>>ch; cout<<"请输入str: "; cin>>str; cout<<"请输入s: "; cin>>s; lch=strlen(ch);//记住使用头文件#include
或者#include
lstr=str.size(); ls=s.length(); LM=sizeof(ch); cout<<"lch="<
<<" lstr="<
<<" ls="<
<

运行结果

在这里插入图片描述

字符串的连接

简析

这小块讲的是如何把两个字符串拼在一起,变成一个字符串

比如s1=“123”,s2="ABC"我想得到一个s=“123ABC”
直接调用s.append就可以了

s.append有4种用法,可能吧

string s1(“123”), s2(“ABC”);
s1.append(s2); // s1 = “123ABC”
s1.append(s2, 1, 2); // s1 = “123ABCBC”
s1.append(3, ‘H’); // s1 = “123ABCBCHHH”
s1.append(“ABCDE”, 2, 3); // s1 = “123ABCBCHHHCDE”,添加 “ABCDE” 的子串(2, 3)

Codes

#include
#include
#include
using namespace std;int main(){
string s1("123"),s2("abcd"); cout<
<

运行结果

在这里插入图片描述

字符串的比较

简析

比较就是孰大孰小和相等,这个就不多说

int flag=s1.compare(s2);flag的值-1表示s1比s2小,但s1和s2长度相同0表示s1=s21表示s1和s2长度相同,但是字典序不一样,s1大于s2x表示s1比s2长度大x-x表示s1比s2长度小x

Codes

#include
#include
#include
using namespace std;int main(){
while(1){
int flag; string s1,s2; cout<<"请输入s1:"; cin>>s1; cout<<"请输入s2:"; cin>>s2; flag=s1.compare(s2); cout<<"flag的结果是:"<
<

运行结果

在这里插入图片描述

比较类函数还有一些用法,具体参考

我写得不是很全面

求字符串的子串

简析

这个求子串就是比如我有一个字符串“abcdefg”,我想得到abcd,或者def

那么我就需要调用substr

string s1("abcdefg");string s2=s1.substr(0,3);//s2="abc",表示从开始,截取3个字符s2=s1.substr(4);//s2="efg"s2=s1.substr(1,5);//表示从1号位起,截取5个字符

Codes

#include
#include
#include
using namespace std;int main(){
string s1,s2; cin>>s1; s2=s1.substr(3); cout<
<

运行结果

在这里插入图片描述

交换两个字符串

简析

类似于swap函数

string s1(“you”),s2(“me”);
s1.swap(s2);

Codes

#include
#include
#include
using namespace std;int main(){
string s1("you"),s2("me"); cout<<"初始s1: "<
<<" 初始s2 :"<
<

运行结果

在这里插入图片描述

字符串的查找函数

简析

查找函数find,可以用来查找某个字符或者子串。

下图引用自C语言中文网
在这里插入图片描述

Codes

#include
#include
using namespace std;int main(){
string s; int flag;//注意此时不能有空格 cout<<"请输入一个字符串:\n"; cin>>s; cout<<"查找字符串中的B的结果为第一个B出现的位置:"; flag=s.find('B'); cout<
<

运行结果

在这里插入图片描述

替换字符串中的子串

简析

所谓替换子串就比如

I AM A STUDENT
I WAS A STUDENT
现在我想把AM替换为WAS,那么调用replace函数

Codes

#include
#include
using namespace std;int main(){
string s("I AM A GOOD STUDENT"); cout<
<

运行结果

在这里插入图片描述

删除字符串的某个子串

简析

比如ABAABBBABABBAAAAA

我想删除所有的B,那么字符串就变为AAAAAAAAAA
或者字符串I LIKE CAT AND DOG
我想删除DOG
亦或是AA BB CC DD,删除字符串中所有空格

Codes

#include
#include
using namespace std;int main(){
int n; string s("ABAABBBABABBAAAAA"), st("I LIKE CAT AND DOG"), str("AA BB CC DD"); for(int i=0;i

运行结果

在这里插入图片描述

插入某个字符串

简析

比如AAAA,我想让它变成AABAA,就要插入一个B

比如一个字符串 I READING.插入一个LIKE让它变成
I LIKE READING

Codes

#include
#include
using namespace std;int main(){
int n; string s("AAAA"), st("I READING"); cout<
<

运行结果

在这里插入图片描述

输入带有空格的字符串

简析

通常我们定义一个字符串,string str;我们想输入"I am a student"

但是用cin的话会遇到空格或者换行导致结束
所以此时我们引入一个输入getline(cin,str);//参数1是cin,参数2是输入字符串的名字

Codes

#include
#include
using namespace std;int main(){
string s1, s2; //cin >> s1; //cout << s1 << endl; getline(cin, s2); cout << s2 << endl; system("pause"); return 0;}

运行结果

在这里插入图片描述

在这里插入图片描述

补充(小插曲

简析

有时候会有cin.get(str,length)这个输入方式,参数1是字符串变量名,参数2是字符串最大长度,而且它可以不用string

Codes

#include
using namespace std;int main(){
char ch[100]; //cin >> ch;//在不知道输入的字符串长度情况下 /* 如果知道字符串长度,那么可以使用for循环一个字符一个的输入 比如hello world长度连上空格共为11,那么使用循环也可以输出空格 for(int i=0;i<11;i++) cin>>ch[i]; for(int i=0;i<11;i++) cout<

运行结果

在这里插入图片描述

在这里插入图片描述

转载地址:http://sdwzi.baihongyu.com/

你可能感兴趣的文章
2018年大数据趋势 :人工智能,机器学习等统统有讲到!
查看>>
20+案例教你可视化图表的设计方法
查看>>
开发者不可错过的开源项目 —— 人工智能篇
查看>>
微信身份证即将推行,AI成主要证明技术
查看>>
黑客到底可以厉害到什么程度?
查看>>
干货|多重预训练视觉模型的迁移学习
查看>>
【视点】从一些实例看大数据部门的权与责
查看>>
一文读懂背包问题
查看>>
一位像素艺术家用39张动图,将大自然的唯美尽收眼底…
查看>>
2017论文回顾 | Yann LeCun:中英日韩语文本分类通用编码机制(附论文下载)
查看>>
【干货】人人都能看懂的LSTM
查看>>
教你用百度地图API抓取建筑物周边位置、房价信息(附代码)
查看>>
5个酷毙的Python工具
查看>>
数据显示:中国人日均睡眠6.5小时,七成睡眠质量不佳
查看>>
微信“跳一跳”高分攻略
查看>>
推荐 :机器学习 Python 库 Top 20
查看>>
阿里开源了14个核心技术,你了解哪些?
查看>>
史上最全人工智能和机器学习会议大盘点
查看>>
独家 | 大数据下的自杀风险感知与疏导(附视频&PPT下载)
查看>>
鉴别一个人是否 js 入门的标准竟然是?!
查看>>