构造函数
string();------无参构造
string (const string& str);------拷贝构造
string (const char* s);------用字符串初始化
template <class InputIterator> string (InputIterator first, InputIterator last);------用迭代器初始化[第一个元素位置,最后一个元素的下一个位置)
string (size_t n, char c);------用n个相同的字符初始化
// 无参构造,不能string s1()因为这样会误以为是函数声明或者函数调用
string s1;
// 用字符串初始化
string s2("你好abcdef"); // string s2="你好abcdef";
// 拷贝构造
string s3(s2); // string s3=s2;
// n个相同的字符初始化
string s4(9,'c');
// 用一段区间初始化,区间必须是左闭右开
char ch[] = "123456";
string s5(ch, ch + 3);
string (const string& str, size_t pos, size_t len = npos);------从str的pos位置开始将长度为len字符串用于初始化
string (const char* s, size_t n);------将字符串的前n个字符用于初始化
// 用字符串初始化
string s1 = "abcdef";
// 从pos位置开始将长度为len的字符串用于初始化
string s2(s1, 2, 3);
string s3(s1, 3); // 如果不传len,默认长度为npos。如果len超出了,到s1的结尾结束
// 将字符串的前5个字符用于初始化
string s4("qwertyuio", 5);
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
cout << s4 << endl;
赋值重载
string& operator= (const string& str);------用string进行赋值
string& operator= (const char* s);------用字符串赋值
string& operator= (char c);------用某个字符赋值
string s("wasd2468");
string s1("abc");
// 用string进行赋值
s1 = s;
cout << s1 << endl;
// 用字符串赋值
s1 = "xyz";
cout << s1 << endl;
// 用某个字符赋值
s1 = 'a';
cout << s1 << endl;
增
void push_back (char c);------尾插一个字符
string& append (const string& str);------尾插一个string类
string& append (const string& str, size_t subpos, size_t sublen);------尾插一个string类的子string,从subpos位置开始,长度sublen
string& append (const char* s);------尾插一个字符串
string& append (const char* s, size_t n);------尾插一个字符串的前n个字符
string& append (size_t n, char c);------尾插n个相同的字符
template <class InputIterator> string& append (InputIterator first, InputIterator last);------尾插一段区间
string& operator+= (const string& str);------尾插一个string类
string& operator+= (const char* s);------尾插一个字符串
string& operator+= (const char* s);------尾插一个字符
string& insert (size_t pos, const string& str);------在pos位置插入一个string类
string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);------在pos位置插入一个string子类
string& insert (size_t pos, const char* s);------在pos位置插入一个字符串
string& insert (size_t pos, const char* s, size_t n);------在pos位置插入一个字符串的前n个字符
string& insert (size_t pos, size_t n, char c);------在pos位置插入n个相同的字符
删
void pop_back();------尾删一个字符
string& erase (size_t pos = 0, size_t len = npos);------从pos位置开始,删除len个字符
iterator erase (iterator p);------删除迭代器p位置上的字符
iterator erase (iterator first, iterator last);------删除一段区间
查
size_t find (const string& str, size_t pos = 0) const;------从pos位置开始,默认从0位置开始,寻找子string类,找到了返回对应第一个字符的下标,如果没有找到返回npos
size_t find (const char* s, size_t pos = 0) const;------从pos位置开始,寻找子串
size_t find (char c, size_t pos = 0) const;------从pos位置开始,寻找对应的字符
size_t rfind (const string& str, size_t pos = npos) const;------从pos位置开始,反向寻找子string类
size_t rfind (const char* s, size_t pos = npos) const;------从pos位置开始,反向寻找对应的子串
size_t rfind (char c, size_t pos = npos) const;------从pos位置开始,反向寻找字符
改
char& operator[] (size_t pos);------返回对应位置的字符引用
string& assign (const string& str);------为string指定一个新值,替换其当前内容
string& assign (const char* s);------将当前内容替换成新字符串
string& replace (size_t pos, size_t len, const string& str);------将pos位置开始,len个字符替换成新string类
string& replace (iterator i1, iterator i2, const string& str);------将对应的区间[i1,i2)替换成新string类
void swap (string& str);------和一个string类进行交换
存储
size_t size() const;------返回已存储的字符个数
size_t length() const;------返回字符串的长度
size_t capacity() const;------返回容量
void clear();------清空长度
bool empty() const;------判断string类是否为空
void resize (size_t n, char c = '\0');------改变size的大小,用c填充
void reserve (size_t n = 0);------改变capacity的大小
void shrink_to_fit();------让capacity与size适应
const char* c_str() const;------返回首地址
遍历
iterator begin();------首元素位置
iterator end();------最后一个元素的下一个位置
reverse_iterator rbegin();------最后一个元素的位置
reverse_iterator rend();------首元素的前一个位置
获取
size_t copy (char* s, size_t len, size_t pos = 0) const;------将string类中的一段字符串写入s中
string substr (size_t pos = 0, size_t len = npos) const;------在string类中,从pos位置开始,截取len个字符,然后将其返回
istream& getline (istream& is, string& str, char delim);------获取一行字符串
本文转载自: https://blog.csdn.net/m0_61433144/article/details/126320027
版权归原作者 零叁零叁零叁 所有, 如有侵权,请联系我们删除。
版权归原作者 零叁零叁零叁 所有, 如有侵权,请联系我们删除。