由 AndrewLing dalao 整理, 蒟蒻做一个宣传者;
说明 | 成员函数 | 用法 |
包含头文件 <string>根据存储的字符串长度动态调整内存空间,比如:存储字符串长度为16-32时, 分配32字节的内存,不一定以\0结尾。 以下所有函数参数中string类型也可以是char*型 | ||
太长时会抛出length_error异常 | string s("……") | |
string s(const int num, "……") | 构造的string太长而无法表达时会抛出length_error异常 | |
string s="……" | 可将字符或字符串赋初始值给 | |
属性 | empty() | |
capacity() | 返回无需增加内存即可存放的字符数 | |
maximum_size() | 返回string对象可存放的最大字符数 | |
length()或者size() | ||
赋值 | assign( string s1) | 即=,但不能将字符赋值 |
assign( string s1, int i, int n) | 从s1中下标为i的字符开始复制n个给,即【i,i+n) | |
取元素 | at(i) | 即s[i],但是s[i]不做范围检查,若超出,at(i)会抛出out_of_range |
成段增添 | += | |
append(string s1) | 把s1复制到后边,相当于+=,但s1不能是字符 | |
append(string s1, int i, int n) | 把s1中从下标为i开始的n个字符复制到后边 | |
比较 | compare(string s1) | 若比s1小,返回-1,大返回1,相等返回0,也可以用通用的大小于号 |
子串 | substr(int i, int n) | 超出范围的不计入 |
交换 | swap(s1) | |
查找子串 | int find(string s1, int i) | 返回从下标i开始,出现子串s1时的下标,若无返回string::npos |
int find(string s1) | 返回子串s1出现时第一个字符的下标,若无子串s1,返回string::npos | |
int rfind(string s1) | 从后往前找 | |
查找任意字符 | int find_first_of(string s1) | 返回第一次出现s1中任意一个字符时的下标,若无返回string::npos |
Int find_last_of(string s1) | 返回最后一次出现s1中任意一个字符时的下标,若无返回string::npos | |
int find_first_not_of(string s1) | 返回第一次出现不在s1中的一个字符时的下标,若无返回string::npos | |
int find_last_not_of(string s1) | 返回最后一次出现不在s1中的字符时的下标,若无返回string::npos | |
替换字符 | erase(int i) | 去掉下标i及之后的字符 |
replace(int i, int n, string s1) | 从下标为i开始的n个字符换为字符串s1,返回修改后的该类的引用 | |
replace(int i, int n, string s1, j, m) | 从下标为i开始的n个字符换为字符串s2中从下标j开始的m个字符,返回修改后的该类的引用 | |
insert(int i, string s1) | 在下标为i处的前面插入s1,返回修改后的该类的引用 | |
insert(int i, string s1, int j, int m) | ||
转换成C语言式 | c_str() | 返回const char * 型字符串,(c_str()在末尾加null)。但若赋给一个const char *p,那么修改类的时候,p指向的字符串也就变了, |
data() | ||
copy(char* c, int n, int i) | 从s1的下标i的字符开始制作一个最长为n的字符串副本,并将其赋值给p2。返回值表明实际复制字符串的长度。 |