当前位置:首页 > 谈天说地 > 正文内容

c++ string截取某一部分(string查找字符串中的字符)

34资源网2022年02月16日 10:40793

前言

我们之前学习C语言的时候知道没有单独的字符串类型,只有字符型,对于操作字符串来说只能用字符型数组来完成,对字符的相关操作也是比较麻烦,但是我们在学习c++后对于字符串的操作是极其方便和简单的。

我们今天要学习的string类是c++的拓展库,使得我们对字符串的操作变得简单,严格来说是属于字符串对象,这个类库里面有很多对字符串操作的方法,接下来我们一起来学习一些比较常用的字符串操作。

字符串的定义

我们来看一下我们的字符串定义:

string str1;

string str2=”hello word”;

string str3(“hello word”);

我们要知道的是我们string类是可以自动处理我们字符串大小的,就比如你str的声明创建了一个长度为0的字符串对象,但是如果你对str1进行输入赋值的时候,它的长度会自动发生改变,这使得它比我们的数组更加的方便和安全,不会存在越界问题。

字符串输入和输出

我们在c++中使用的输入和输出使用的是cout和cin在定义好数组后就可以对字符串进行输入和输出,例如下面的代码:

string str;//定义一个字符串str

cin>>str; //使用cin对字符串进行赋值

cout<<str<<endl;//使用cout输出字符串

字符串赋值、拼接和附加

我们可以通过字符串的这几个操作看出来string对处理字符串的强大之处了。在学习C语言的时候我们知道要把字符串str1赋值给str2 我们需要使用复制函数strcpy,但是我们的c++中可以直接使用等号;

strcpy(str2,str1)//C语言中把str1的值赋值给str2

str2 = str1 //c++中str1的值赋值给字符串str2;

我们再来看一下字符串的拼接把str1和str2进行拼接:
strcat(str1,str2);//C语言中字符串的拼接使用strcat

str2=str1+str2//c++中我们使用“+”号对字符串进行拼接。

字符串的其他操作

除了以上的操作string其他常用的方法之外string还有很多好玩的操作我们一起来看一遍:

1、创建一个包含n个元素,每个元素初始化为指定元素例如:string str1(3,A);输出结果会是“AAA”。

2、把str1赋值给str2 :string str2(str1)或者str2=str1;

3、获取字符串的长度和大小使用:str.size()和str.length();

4、字符串追加把str2追加到str1后面:str1+=str2、str1.append(str2)。

5、比较字符串是否相等:str1==str2 或者str1 !=str2;

6、获取str1中的子字符串:str1.substr(n,m),从str1的第n个字符开始取m个字符。

7、获取字符串中某个字符:str[n]、或者str.at(n)获取str字符串中第n个字符。

除了这些简单的操作其实string的可以实现的方法还有很多,比如说查找,删除,插入等方法,感兴趣的小伙伴可以自己去试一试。

代码测试

#include<iostream>
#include<string>
using namespace std;
int main()
{
  
string str1(3,'A');
cout<<str1<<endl;

string str2="hello word";
int a=str2.size();
int b=str2.length();
cout<<"str2 长度:"<<a<<"  "<<b<<endl;

string str3="hello";
string str4=" word";
str3+=str4;
cout<<"拼接:"<<str3<<"   "<<endl;
str3.append(str4);
cout<<"拼接:"<<str3<<"   "<<endl;

string str5="hello";
string str6="hello";
string str7="word";
if(str6 == str5)
{  cout<<"相等"<<endl;}
if(str7 != str5)
{  cout<<"不相等"<<endl;}

string str8="ABCDEFG";
string str9=str8.substr(2,3);
cout<<"str9:"<<str9<<endl;
cout<<"str8[2]:"<<str8[2]<<endl;
return 0;
}

string和C语言中字符函数对比

在刚刚讲述字符串拼接和赋值的时候单独拿出来讲了一下,主要是为了现在和大家再多说一下他们之间的区别,我们C语言虽然说也可以实现对字符串的相关操作,但是相对麻烦,但是除了麻烦我们应该还要知道另外一个重要的是方面:

我们函数strcat()在赋值的时候会存在目标内存不足,无法存储的危险,也许会覆盖相邻的内存。可能会导致程序终止运行。但是我们的string会自动调整大小能够很好避免这个错误的发生。

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/7839.html

分享给朋友:

相关文章

如何开始自媒体写作,试试这四个方法吧

如何开始自媒体写作,试试这四个方法吧

随着现在自媒体平台的不断出现,写作大神也层出不穷,月入过万的人也是大有人在。很多新手看到人家收入高,也都想尝试下写作,注册一大堆账号。但是很多人做了一段时间之后也就搁置了,要问原因为什么,统一回复“写文章太难了”整不了。其实只要把握住几点写...

28句用哀兵必胜的句子造句大全

28句用哀兵必胜的句子造句大全

28句用哀兵必胜的句子造句大全(1) 哀兵必胜!苏联红军终于赶走法西斯。(2) 所谓哀兵必胜,那也是要建立在哀兵还有一拼的实力上面。(3) 哀兵必胜,侵略者必将遭到可耻的失败。zaojv.com(4) 在古代战争中有许多哀兵必胜的战例。(5...

用侠肝义胆造句30句

用侠肝义胆造句30句

1、李大哥侠肝义胆,受到四邻的交口称赞。2、村民见二位神仙眷侣侠肝义胆,救民水火,却落得个这般凄惨的下场,当下无人不落下泪来。3、还有蛊族毒宗的唯一传人,药宗里的第一才女,一朝沦落风尘的倾城之貌,侠肝义胆的流氓与巾帼,皇家琴师,断袖城主,独...

华梅的经典语录

华梅的经典语录

华梅,女,1951年生于天津市,祖籍无锡。现为天津师范大学美术与设计学院院长、教授、师大华梅服饰文化学研究所所长。国家人事部授衔“有突出贡献中青年专家”,享受国务院政府津贴。1997年天津市劳动模范,1998年全国教育系统巾帼建功标兵、全国...

泰戈尔的名言名句:世界上最远的距离

泰戈尔的名言名句:世界上最远的距离

世界上最远的距离不是生与死的距离而是我站在你的面前你却不知道我爱你世界上最远的距离不是我站在你的面前你却不知道我爱你而是爱到痴迷却不能说我爱你世界上最远的距离不是我不能说我爱你而是想你痛彻心脾却只能深埋心底世界上最远的距离不是我不能说我想你...

打不死的小强励志语句,关于小强的7个句子分享

打不死的小强励志语句,关于小强的7个句子分享

1、野火烧不尽,春风吹又生用打不死的小强来形容,真的是再合适不过了2、命中注定无法改变,总觉得自己是打不死的小强,这下终于生病了,最对不起的就是自己了3、好好干吧!要成为一名打不死的小强。无论别人怎样,你都要成为那个开心,优秀的自己,好吗?...