string的用法详解--C++(新手入门!)

目录

string的用法详解

1.string的定义

2.string中内容的访问

3.string常用函数解析


string的用法详解

 

前言:

在c语言中,一般用char str[]来存放字符串,但是使用字符数组有时会显得操作麻烦,而且会因为经验不足产生一些错误!

C++在STL中加入了string类型,对字符串的需求功能进行了封装,使得操作起来更方便。

要使用string,需要加入头文件

#include<string>,注意:#include<string>#include<string.h>完全不同。

1.string的定义

string str;

如果要初始化,可以直接给string类型进行赋值

example:

string str = “abcd”;

2.string中内容的访问

(1)通过下标访问:

一般来说,可以像字符数组那样去访问string,得到单个的字符。

如果想要读入和输出整个字符串,则只能用cin和cout;

(2)通过迭代器访问:

string :: interator it;

这样就得到了迭代器,然后可以用*it来访问其中的每一位!

最后指出string和vector一样,支持直接对迭代器进行加减某个数字,如str.begin()+3的写法是可行的!

3.string常用函数解析

(1)operate +=

这是string的加法,可以直接将两个string拼接起来。

str3 = str1 + str2
or
str1 += str2
//在分别做完两个运算时,str1=str3

(2)compare operator

两个string类型可以直接用==,!=,<,<=,>,>=比较大小,比较规则是字典序。

(3)length()/size()

length()返回string的长度,即存放的字符数,时间复杂度为O(1)。size()与length()基本相同!

(4)insert()

有很多种写法,此处只列举出几个常用的写法,时间复杂度为O(N)。

第一种写法:

insert(pos,string);

在pos的位置上,插入string这个字符串:

str2 = "opq";
str.insert(3,str2);//此处str2也可以直接写opq

第二种写法:

insert(it,it2,it3);

it表示原字符串的欲插入位置,it2和it3为待插字符串的首尾迭代器,用来表示串[it2,it3)

str.insert(str.begin()+3,str2.begin(),str2,end());

(5)erase()

erase()有两种用法:删除单个元素,删除一个区间内的所有元素。时间复杂度均为O(N)

1.删除单个元素

str.erase(str.begin()+3);

2.删除一个区间的元素

又分有两种做法

第一种:

str.erase(first,last);

删除[first,last);

第二种:

str.erase(pos,length);

其中pos为需要开始删除的起始位置,length为删除的字符个数!

(6)clear()

clear()用于清除string中的数据,时间复杂度一般为O(1)。

(7)substr()

substr(pos,len)返回从pos号开始,长度为len的字符串,时间复杂度为O(len)。

(8)string::npos

string::npos是一个常数,其本身的值为-1,但由于是unsigned_int类型,因此实际上也可以认为是unsigned_int类型的最大值。string::nops泳衣作为find函数失配时的返回值。

(9)find()

str.find(str2),当str2是str的子串时,返回其在str中第一次出现的位置:如果str2不是string的字串,那么返回string::npos;

str.find(str2,pos);

从str的pos号位开始匹配str2,返回值与上次相同。

时间复杂度为O(mn),其中n和m分别为str和str2的长度。

(10)replace()

有两种使用方法:

第一种:

str.replace(it1,it2,str2);

从[it1,it2)的字符换成str2

第二种:

str.replace(pos,len,str2);

从pos位置开始用str2将长度为len的字符换掉。

附上云云~~~~

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值