我们先初步的认识一下string,string底层其实是一个模版类
typedef basic_string<char> string;
我们先大致的把string的成员函数列举出来
class string
{
private:
char * str;
size_t size;
size_t capacity;
};
1.string的六大默认函数
1.1 构造函数、拷贝构造
注:以下只介绍常用的几个构造函数 以下同理
1. string();
2. string(const char *s);
3. string(const string& str); 拷贝构造
1.2析构函数
~string();
1.3赋值运算符重载
1.string& operator=(const char* s);
2.string& operator=(const string& str);
3.string& operator=(char c);
2.string的遍历
2.1下标遍历
底层物理空间是连续的情况下,我们可以使用下标遍历
string& operator[] (size_t pos);
const string& operator[] (size_t pos) const;
2.2 iterator迭代器
typedef char* iterator
typedef const char* const_iterator
返回第一个元素
iterator begin();
const_iterator begin() const;
返回最后一个元素
iterator end();
const_iterator end() const;
2.3范围for
范围for看着很高大上,其实底层跟迭代器差不多的用法
3.string中的capacity
size_t size() const; 返回string中的有效字符个数
void resize(size_t n); 调整string中的有效字符个数
size_t capacity() const; 返回string中能存储有效字符的空间
void reserve(size_t n = 0); 调整string中能存储有效字符的空间
注意:不同的编译器扩容机制会有些许不同
void clear(); 清除当前字符串内容,既将size赋值为0
4.string中的增删查改
4.1插入
尾插:
string& operator+= (const string& str) ;
string& operator+=(const char* s);
string& operator+=(const cahr c);
void push_back(cahr c);
头插:
在pos位置上插入n个字符字符c/字符串str,并返回该字符的位置
string& insert(size_t pos, size_t n,char c);
string& insert(size_t pos, const char* str);
4.2删除
删除从pos位置开始的len个元素,若len太大,则删除全部元素
string& erase(size_t pos = 0,size_t len = npos);
4.3查找string中的字符或者字符串
size_t find (char c, size_t pos = 0) const; 返回c在string中从pos位置开始第一次出现的位置
size_t find (const char* s, size_t pos = 0) const; 返回子串s在string中从pos位置开始第一次出现的位置
4.4改变string中一段字符
string & replace(size_t pos,size_t len,const string* str); 将pos位置开始,跨越len个字符替换为str