构造函数

default (1) string(); 默认构造函数 返回长度为0的空字符串
copy (2) string (const string& str); 拷贝构造函数 得到str的一份拷贝
substring (3) string (const string& str, size_t pos, size_t len = npos); 从子串构造 从字符串str的pos位置索引开始,拷贝len个字符。但如果str太短或者len=string::npos,则复制到str的末尾。string::npos是一个很大的正整数。
string str = “012345”;
string s2(str, 1, 3); // “123”
string s3(str, 1, -1); // “12345”
string s4(str, 1, string::npos); // “12345”
string s5(str, 1, 0); // “”
from c-string (4) string (const char* s); 从C风格的字符串构造 拷贝s指向的以空结尾的字符序列(C风格的字符串)。
from buffer (5) string (const char* s, size_t n); 从缓存构造 拷贝s指向的字符序列的前n个字符
fill (6) string (size_t n, char c); 填充构造 以n个连续的字符c填充字符串
range (7) template string (InputIterator first, InputIterator last); 范围构造 拷贝序列中位置在范围[first,last)字符序列,顺序不变
initializer list (8) string (initializer_list il); 初始化列表 按原顺序拷贝初始化列表il中的每个字符
move (9) string (string&& str) noexcept;
Acquires the contents of str.
str is left in an unspecified but valid state.

上述所有的构造函数都支持成员类型为allocator_type的对象作为末尾附加的可选参数,这和string是不相关的(上面没有显示,请参看basic_string的构造器以获取完整签名)。

字符串拼接

+=

  1. string& operator+= (const string& str);
  2. string& operator+= (const char* s);
  3. string& operator+= (char c);
  4. string& operator+= (initializer_list<char> il);

append

string& append (const string& str);
string& append (const string& str, size_t subpos, size_t sublen);
string& append (const char* s);
string& append (const char* s, size_t n);
string& append (size_t n, char c);
string& append (InputIterator first, InputIterator last);
string& append (initializer_list<char> il);

push_back

void push_back (char c);

删除字符

erase 删除某个位置或某个范围内的字符

string& erase (size_t pos = 0, size_t len = npos);
iterator erase (const_iterator p);
iterator erase (const_iterator first, const_iterator last)

pop_back 删除尾字符

void pop_back();