C++ string类

c++提供了以下两种类型的字符串表示形式:(1)c风格字符串,使用字符数组char str[]来存放字符串;(2)c++ STL中的string类类型。

如果要使用string,需要添加string头文件,即#include <string> (注意string.h和string是不一样的头文件)。 除此之外, 还需要在头文件下面加上一句: "using namespace std; "

1. string的定义
定义string的方式跟基本数据类型相同, 只需要在string后跟上变量名即可:
string str;
如果要初始化,可以直接给string类型的变量进行赋值:
string str = "abed";
2. string中内容的访问

(1)通过下标访问

string str = "abed";

str[i];

(2)通过迭代器访问

vector<string>::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector<string>定义的iterator类型

iter=str.begin(); //iter=str.begin()+i

3. string 常用函数

(1) operator+=
这是string 的加法, 可以将两个string 直接拼接起来。

string str1= "abc", str2 = "xyz", str3;

str3 = str1 + str2;//将str1和str2拼接, 赋值给str3

(2) compare operator
两个string 类型可以直接使用=、!=、<、<=、>、>=比较大小, 比较规则是字典序。

string str1 = "aa", str2 = "aaa", str3 = "abc", str4 = "xy";
if (str1 < str2) printf ('' ok1 \n"); //如果str1字典序小于str2, 输出ok1
if(str1 != str3) printf("ok2\n"); //如果str1和str3不等, 输出ok2
if(str4 >= str3) printf("ok3\n"); //如果str4字典序大千等千str3, 输出ok3

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

(4) insert()
string 的insert()函数有很多种写法, 这里给出几个常用的写法, 时间复杂度为O(N)。
1)insert(pos, string), 在pos 号位置插入字符串string。

2)insert(it, it2, it3), it 为原字符串的欲插入位置, it2和it3 为待插字符串的首尾迭代器,
用来表示串[it2, it3)将被插在it 的位置上。

3)insert(it, n, ch), it 为原字符char ch的欲插入位置,在该位置插入n个字符类型的ch。

string str = "meihao";
string sstr = str.insert(0,2,'a');
cout<<sstr<<endl;   //aameihao

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

vector<string>::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector<string>定义的iterator类型

iter=str.begin(); //iter=str.begin()+i

str.erase(iter);

(6) clear()
clear()用以清空string中的数据, 时间复杂度一般为0(1)。

string str = "abed";
str. clear () ; / /清空字符串

(7) substr()
substr(posle, n)返回从pos号位开始、 长度为len的子串, 时间复杂度为O(len)。

string str = "Thank you for your smile.";
cout << str.substr(O, 5) << endl;
cout << str.substr(14, 4) << endl;
cout << str.substr(l9, 5) <<endl;

//输出结果:
Thank
your
smile

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

以上内容参考整理于《算法笔记》胡凡 6.3 string的常见用法详解 P202。

?mid=&wid=51824&sid=&tid=8554&rid=LOADED&custom1=mp.csdn.net&custom2=%2Fconsole%2Feditor%2Fhtml%2F106367878&custom3=brounelink.com&t=1591003845000?mid=&wid=51824&sid=&tid=8554&rid=FINISHED&custom1=mp.csdn.net&t=1591003845001

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值