设为首页 加入收藏

TOP

c++标准库string的使用完美总结——十分详细,复习学习记忆都可以使用(二)
2023-07-23 13:39:17 】 浏览:404
Tags:string 十分 习学习 都可以
string b = "5678"; 1.在string字符串某一个位置上插入另一个(string)字符串 insert(int,string&); a.insert(0, b); //结果为 a="56781234"; a.insert(2, b); //结果为 a="12567834"; insert(int,const char*); a.insert(3,"abcd");//结果为 a="123abcd4"; 2.在string字符串某一个位置上插入另一个字符串的前n个字符 insert(int,const char*,int); a.insert(1,"abcd",2); //结果为 a="1ab234"; 3.在string字符串某一位置上插入另一个string字符串(从下标为n的位置开始到结束) insert(int,string&,int); a.insert(1,b,2); //结果为 a="178234"; 4.在string字符串某一位置上插入另一个(string)字符串(从下标为n的位置开始连续m个字符) insert(int,string&,int,int); a.insert(2,b,1,2); //结果为 a="126734"; a.insert(0,b,0,3); //结果为 a="5671234"; insert(int,const char*,int,int); a.insert(2,"5678",1,2); //结果为 a="126734"; 5.在字符串中插入n个字符 insert(int,int,const char); a.insert(2,5,'k'); //结果为 a="12kkkkk34"; insert(iterator,const char); a.insert(a.begin()+3,'k'); //结果为 a="123k4"; insert(iterator,int,const char); a.insert(a.begin()+3,10,'k'); //结果为 a="123kkkkkkkkkk4"; 6.在字符串某个位置插入另一个字符串的某一个区间字符 insert(iterator,const_iterator_first,const_iterator_last); a.insert(a.begin() + 1, b.begin() + 1, b.end() - 1);//结果为 a="167234";

4.取改 单一字符 [ ], at() 替换字符replace()

可以使用下标操作符[]和函数at()对元素包含的字符进行访问。但是应该注意的是操作符[]并不检查索引是否有效(有效索引0~str.length()),如果索引失效,会引起未定义的行为。而at()会检查,如果使用 at()的时候索引无效,会抛出out_of_range异常。
1.获取string字符串某一个字符 auto s=a.at(1); 2.修改string字符串某一个字符 a.at(2)='1';
使用[]同理;还有stl的迭代器和front(),back()也可以
不赞成类似于下面的引用或指针赋值:

  char& r=s[2];
  char* p= &s[3];

因为一旦发生重新分配,r,p立即失效。避免的方法就是不使用。
遍历所有字符,这可由C风格的索引或STL迭代子来完成(如果无需修改,应使用const_iterator)。

 std::string name = "marius";
 for(size_t i = 0; i < name.length(); ++i)
 	std::cout << name[i];
 for(std::string::const_iterator cit = name.begin(); cit != name.end(); ++cit)
 	std::cout << *cit;
 for(std::string::iterator it = name.begin();it != name.end(); ++it)
 	*it = toupper(*it);
     string s="il8n";
     s.replace(1,2,"nternationalizatio");//从索引1开始的2个替换成后面的C_string

std :: string类的替换函数

函数1:std::string & replace ( (size_type pos1, size_type n1, const std::string & str, size_type pos2 = 0, size_type n2 = npos )) ;

 s1.replace(1, 3, "123456", 2, 4);  //用 "123456" 的子串(2,4) 替换 s1 的子串(1,3)

该函数的作用:使用str字符串从位置pos2开始的n2个字符,替换当前字符串从pos1位置开始处的n1个字符。即该函数将当前字符串从pos1开始的n1个字符全部删除,然后再用str整个字符串或者str从pos2开始的n2个字符,从pos1位置开始填入到当前字符串中。
提醒:如果n1或者n2的数值超出了对应字符串的长度,以实际长度为准,不会出现访问越界的情况。
注意:函数(1~4)
a、如果pos1指定的位置超出当前字符串的范围,抛出std::out_of_range异常,不捕捉将导致coredump。
b、如果pos2指定的位置超出替换字符串str的范围,抛出std::out_of_range异常,不捕捉将导致coredump。

函数2:std::string& replace(size_type pos, size_type n1, const char * s, size_type n2);
该函数的作用:使用字符串s的前n2个字符,替换当前字符串从pos位置开始处的n1个字符。即函数将当前字符串从pos开始的n1个字符全部删除,然后再用字符串s的前n2个字符填入到当前字符串中。类似于函数1的pos2等于0,必须指定n2的这种情况,但也有一点的差别,下面会注意里描述这种差别。
a.replace(6, 3, "THJKL", 2); //结果为 a="1234abTH678efgh";

函数3:std::string& replace(size_type pos, size_type n1, const char* s);

 s2.replace(n, 5, "XXX");  //将子串(n,5)替换为"XXX"

该函数的作用:使用以''为结尾的字符串s,替换当前字符串从pos位置开始处的n1个字符。即函数将当前字符串从pos开始的n1个字符全部删除,然后再用字符串s从开始到以''结束的

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目