所有字符,从pos位置开始填入到当前字符串中。
函数4:std::string& replace(size_type pos, size_type n1, size_type n2, char c);
该函数的作用:使用n2个c表示的字符,替换当前字符串从pos位置开始处的n1个字符。即函数将当前字符串从pos开始的n1个字符全部删除,然后再用n2个c字符,从pos位置开始填入到当前字符串中。
s2.replace(2, 3, 5, '0'); //用 5 个 '0' 替换子串(2,3)
函数5:std::string& replace((iterator i1, iterator i2, const std:: string& str));
该函数的作用:使用字符串str,替换当前字符串[i1,i2)之间的字符。
a.replace(a.begin()+5,a.end()-3,b); //结果为 a="1234aABCDfgh";
函数6:std::string& replace(iterator i1, iterator i2, const char* s, size_type n);
该函数的作用:使用字符串s的前n个字符,替换当前字符串[i1,i2)之间的字符。
a.replace(a.begin() + 6, a.end() - 3, "THJKL", 2);//结果为 a="1234abTHfgh";
函数7:std::string& replace(iterator i1, iterator i2, const char* s);
该函数的作用:使用以''结尾的字符串s,替换当前字符串[i1,i2)之间的字符。
a.replace(a.begin()+3,a.begin()+6,"替换"); //结果为 a="123替换cd5678efgh";
函数8:std::string& replace(iterator i1, iterator i2, size_type n, char c);
该函数的作用:使用n个c表示的字符,替换当前字符串[i1,i2)之间的字符。
a.replace(a.begin()+6, a.end()-3, 5, '>');
5.将某值写入和写出stream >>,getline(),<<
1.>> 从输入流读取一个string
2.<< 把一个string写入输出流。
3. 另一个函数就是getline(),他从输入流读取一行内容,直到遇到分行符或到了文件尾。istream& getline (istream& is, string& str);std::getline(std::cin, s);getline就可以实现输入整行字符串,如果需要输入多行,用一个while嵌套即可:while( getline() )
6.删除全部字符clear() 删除nStart—nEnd位置字符erase(int nStart,int nEnd)
把字符串清空的方法有三个:s="";s.clear();s.erase();
在字符串末尾删除一个字符 a.pop_back(); //结果为 a="12";
1.删除所有字符
a.erase(); //结果为 a="";
2.从字符串的某一个位置开始删除
a.erase(n) //从字符串的第n个字符开始删除
a.erase(3); //结果为 a="123";
a.erase(5); //结果为 a="12345";
a.erase(0); //等同于a.erase() a="";
3.从字符串的某一个位置开始,向后删除m个字符
a.erase(n,m); //从字符的第n个字符开始删除m个字符
a.erase(2,3); //结果为 a="126789";
a.erase(4,1); //结果为 a="12346789";
4.删除迭代器位置处的字符,并返回下一个字符的迭代器
auot iter=a.erase(a.begin()+1); //结果为 a="13456789";
cout<<*iter<<endl; //结果为 *iter=3
5.删除迭代器所指向的区间,并返回下一个字符的迭代器 auto iter=a.erase(a.begin()+1,a.end()-2);//结果为 a="189";
cout<<*iter<,endl; //结果为 *iter=8;
6.删除字符时常常与find()函数配合使用(find()函数的用法会在以后写出)
a.erase(a.find("56"),2); //结果为 a="1234789";
7.stl相关begin() end() rbegin() rend() front和back
std::string name = "marius";
// 使字符串全为大写
std::transform(name.begin(), name.end(), name.begin(),toupper);
std::string name = "marius";
// 升序排列字符串
std::sort(name.begin(), name.end());
std::string name = "marius";
// 反转字符串
std::reverse(name.begin(), name.end());
bool iswhitespace(char ch){
returnch == ' ' || ch == 't' || ch == 'v' ||
ch == 'r' || ch == 'n';
}
std::string name = " marius";
// 删除空白字符
std::string::iterator newend = std::remove_if(name.begin(), name.end(), iswhitespace);
name.erase(newend);
string a="abcd";
1.获取字符串最后一个字符
auto b=a.back(); //结果为 b='d';
2.修改字符串最后一个字符
a.back()='!'; //结果为 a="abc!";
3.获取字符串第一个字符
auto b=a.front(); //结果为 b='a';
4.修改字符串第一个字符
a.front()='!'; //结果为 a="!bcd";
string::reverse_iterator rit = s.rbegin();//取开头是调用rbegin接口
8.查找函数和返回某个子字符串substr()
find(),rfind(),find_first_of(),find_last_of(),find_first_not_of(),find_last_not_o