《算法笔记》6.3 string详解--suan-fa-bi-ji-63string-xiang-jie

6.3 string的常见用法详解

如果要使用string,需要添加头文件和命名空间。

#include<string>
using namespace std ;

注意:string.h与string是不一样的头文件。

1. string定义方式

string ste ;

如果要初始化

string str = "abc" ;

2. string中内容访问

(1)下标访问

一般来说,可以直接像字符数组那样去访问string

for( int i = 0 ; i < str.length() ; i++ ){
	cout << str[i] << endl ;
}

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

string str ;
cin >> str ;
cout << str ;

c_str()将string类型转换为字符数组类型

string str = "abcd" ;
//将string转换成char[]并且输出
printf("%s\n" , str.c_str() ) ;

也可以通过构造将char[]转换成string

    char name[5] = {'a' , 'b' , 'c' };
    string str(name) ;
    cout << str ;

(2)通过迭代器访问

有些函数如insert()与erase()要求以迭代器为参数。

string::iterator it ;

string和vector一样,支持直接对迭代器进行加减整数,如

str.begin()+3 ;

等价于

str[3] ;

3. string常用函数

(1)运算符+=

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

(2)string的比较

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

(3)length()/size()

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

(4)insert()

string的insert()函数有很多种写法,记录一下常用的几个,时间复杂度为O(N)。

  • insert(pos,string),在pos号位置上插入字符串string
//往str[3]处插入str2
str.insert( 3 , str2 ) ;
  • insert( it , it2 , it3 ),it为原字符串的欲插入位置,it2与it3为待插入字符串的首尾迭代器。

(5)erase()

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

  • 删除单个元素

str.earse(it)用于删除单个元素。

//删除4号位即str[4]
str.erase( str.begin()+4 ) ;
  • 删除一个区间内的所有元素
    删除一个区间内的所有元素有两种方法:

    • str.erase( first , last ) 即[ first , last ) 。

    • str.erase(pos , length),其中pos为需要开始删除的位置,length为删除字符的个数。

(6)clear()

clear()用以清空string的数据,时间复杂度一般为O(1).

(7)substr()

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

(8)string::npos

string::npos是一个常数,用以表作find函数失配时的返回值。

(9)find()

str.find(str2),当str2为str的字串时,返回其在str中第一次出现的位置;如果str2不是str的字串,返回string::npos。
str.find(str2,pos),从str的pos号位开始匹配str2,返回值与上相同。

(10)replace()

str.replace(pos , len , str2)把str从pos号位开始、长度为len的字串替换为str2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值