C++—复合类型

110 阅读3分钟

string

string 的初始化

// 三种方法
string s1("hello");
string s2 = "ten";
string s3(8,'x');

string主要成员函数

  1. 截取子串

    s.substr(pos, n)    截取s中从pos开始(包括0)的n个字符的子串,并返回
    
    s.substr(pos)        截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回
    
  2. 替换子串

    s.replace(pos, n, s1)    用s1替换s中从pos开始(包括0)的n个字符的子串
    
  3. 查找子串

    s.find(s1)         查找s中第一次出现s1的位置,并返回(包括0)
    
    s.rfind(s1)        查找s中最后次出现s1的位置,并返回(包括0)
    
    s.find_first_of(s1)       查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)
    
    s.find_last_of(s1)       查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)
    
    s.fin_first_not_of(s1)         查找s中第一个不属于s1中的字符的位置,并返回(包括0)
    
    s.fin_last_not_of(s1)         查找s中最后一个不属于s1中的字符的位置,并返回(包括0
  4. 对象长度

    s.length()
    
  5. 赋值与连接

// 方式1
string s1("cat"),s2;
s2=s1;
// 方式2
string s3;
s3.assign(s1);
// 方式3
string s4;
s4.assign(s1,1,2);
  1. string类的替换函数:
string &replace(int p0, int n0,const char *s);//删除从p0开始的n0个字符,然后在p0处插入串s
string &replace(int p0, int n0,const char *s, int n);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符
string &replace(int p0, int n0,const string &s);//删除从p0开始的n0个字符,然后在p0处插入串s
string &replace(int p0, int n0,const string &s, int pos, int n);//删除p0开始的n0个字符,然后在p0处插入串s中从pos开始的n个字符
string &replace(int p0, int n0,int n, char c);//删除p0开始的n0个字符,然后在p0处插入n个字符c
string &replace(iterator first0, iterator last0,const char *s);//把[first0,last0)之间的部分替换为字符串s
string &replace(iterator first0, iterator last0,const char *s, int n);//把[first0,last0)之间的部分替换为s的前n个字符
string &replace(iterator first0, iterator last0,const string &s);//把[first0,last0)之间的部分替换为串s
string &replace(iterator first0, iterator last0,int n, char c);//把[first0,last0)之间的部分替换为n个字符c
string &replace(iterator first0, iterator last0,const_iterator first, const_iterator last);//把[first0,last0)之间的部分替换成[first,last)之间的字符串
  1. string类的插入函数:
string &insert(int p0, const char *s);
string &insert(int p0, const char *s, int n);
string &insert(int p0,const string &s);
string &insert(int p0,const string &s, int pos, int n);
//前4个函数在p0位置插入字符串s中pos开始的前n个字符
string &insert(int p0, int n, char c);//此函数在p0处插入n个字符c
iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置
void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first,last)之间的字符
void insert(iterator it, int n, char c);//在it处插入n个字符c
  1. string类的删除函数
iterator erase(iterator first, iterator last);//删除[first,last)之间的所有字符,返回删除后迭代器的位置
iterator erase(iterator it);//删除it指向的字符,返回删除后迭代器的位置
string &erase(int pos = 0, int n = npos);//删除pos开始的n个字符,返回修改后的字符串

void clear(); //清空字符串

常用技巧

  1. 实现trim的功能
// right trim
string s;
s.erase(s.find_last_not_of(" \n\r\t")+1);