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。