标准库类型string
1.定义与初始化
string s1 //默认初始化,s1是一个空串
string s2=s1 //s2是s1的副本
string s3="value" //s3是字面值"value"的副本
string s4(n,'c') //s4是连续n个字符'c'组成的串
2.增
2.1. 加法运算符(+)
//两个string对象相加
//string& operator+= (const string& str);
string s1="aaa";
string s2="bbb";
string s3=s1+s2; //s3的内容为"aaabbb"
//字面量加string
//string& operator+= (const char* s);
string s4="aaa";
string s5=s4+"bbb" //s5的内容为"aaabbb"
2.2. insert()
//在原串下标pos前插入字符串或字面量
//string& insert (size_t pos, const string& str);
//string& insert (size_t pos, const char* s);
string s1="aaa";
string s2="bbb";
s1.insert(1,s2); //s1的内容为"abbbaa"
s2.insert(2,"ccc"); //s2的内容为"bbcccb"
//在原串下标pos前插入n个字符c
//string& insert (size_t pos, size_t n, char c);
string s3="aaa";
s3.insert(1,2,'c') //s3的内容为"accaa"
2.3.push_back()
//在原串的后面加一个字符
//void push_back (char c);
string s1="aaa";
s1.push_back(b); //s1的内容为"aaab"
2.4.append()
//在原串后面附加字符串或字面量
//string& append (const string& str);
//string& append (const char* s);
string s1="aaa";
string s2="bbb";
s1.append(s2); //s1的内容为"aaabbb"
s2.append("ccc"); //s2的内容为"bbbccc"
//在原串后面附加上一个字符串str的子串,这个子串从下标subpos开始,长度为npos
//string& append (const string& str, size_t subpos, size_t sublen = npos);
string s3="aaa";
string s4="bbb";
s3.append(s4,0,2); //s3的内容为"aaabb"
3.删
3.1. erase()
//删除原串从下标pos开始,长度为npos的子串
//string& erase (size_t pos = 0, size_t len = npos);
string s1="abcde";
s1.erase(1,3); //s1的内容为"ae"
//删除迭代器p指向的元素
//iterator erase (iterator p);
string s2="abcde";
s2.erase(s2.begin()+2); //s2的内容为"abde"
//删除范围为[first,last)的子串
//iterator erase (iterator first, iterator last);
string s3="abcde";
s3.erase(s3.begin()+1,s3.end()-2); //s3的内容为"ade"
3.2. pop_back()
//删除原串最后一个字符
//void pop_back();
string s1="abcde";
s1.pop_back(); //s1的内容为"abcd"
4.改
4.1. replace()
//将原串从下标pos开始,长度为len的子串替换为str
//string& replace (size_t pos, size_t len, const string& str);
string s1="abcde";
string s2="xxx"
s1.replace(1,3,s2); //s1的内容为"axxxe"
//将原串从下标pos开始,长度为len的子串替换为,str从下标subpos开始,长度为npos的子串
//string& replace (size_t pos, size_t len, const string& str,
// size_t subpos, size_t sublen = npos);
string s3="abcde";
string s4="xyz"
s3.replace(1,3,s4,1,2); //s3的内容为"ayze"
5.查
5.1. find()
//返回找到目标字符串/字面量/字符的第一个元素的下标,没找到返回std::string::npos
//size_t find (const string& str, size_t pos = 0) const noexcept;
//size_t find (const char* s, size_t pos = 0) const;
//size_t find (char c, size_t pos = 0) const noexcept;
string s1="abcde";
char c='a';
string s2="bc";
std::size_t found;
found=s1.find(c); //found为0
found=s1.find(s2); //found为1
found=s1.find("de"); //found为3
found=s1.find("xxx"); //found为std::string::npos
6.其他常用操作
6.1. substr()
//返回原串从下标pos开始,长度为npos的子串
//string substr (size_t pos = 0, size_t len = npos) const;
string s1="abcde";
string s2=s1.substr(1,2); //s2的内容为"bc"
6.2. size()/length()
//返回字符串的字节数
//size_t size() const noexcept;
//size_t length() const noexcept;
string s1="abcde";
size_t len=s1.size(); //len为5
6.3. c_str()
//返回原串的C风格字符串的指针
//const char* c_str() const noexcept;
string s1="abcde";
char* cstr = new char [s1.length()+1];
std::strcpy (cstr, s1.c_str());
C++官方详细手册string