设为首页 加入收藏

TOP

c++标准库string的使用完美总结——十分详细,复习学习记忆都可以使用(四)
2023-07-23 13:39:17 】 浏览:400
Tags:string 十分 习学习 都可以
所有字符,从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

首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数的计数 c++ 下一篇栈——stack的用法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目