当前位置:   article > 正文

String 类的使用 (c++)_c++的string类的对象如何在头部添加字符串、

c++的string类的对象如何在头部添加字符串、

目录

String的初始化: 

 一、1、定义初始化:2、输入初始化:

 二、给string串分配大小空间:

 三、给string串填充字符

 四、分割string串

String串的增、删、改、查、取子串、比较、大小写转换:

一、“增”----插入:

1、使用str.append();进行尾部插入。

2、使用str.insert();进行指定位置的插入。

1>/插入到最前面:

2>/插入到中间某指定位置: 

3>/插入到末尾:

二、“删”----删除

使用str.erase();来进行指定位置的删除 :

 指定位置删除某几个字符:

三、“改”----修改/替换:

1、使用str.replace();来实现某个位置开始的几个字符  替换为某几个字符。

2、使用str.erase();先删除指定位置的字符,,再使用str.insert();在某个位置插入字符。(使用方法见上文)。

将某几个字符替换成某几个字符:

四、“查”----查找:

使用str.find();来实现从前往后查找:

使用str.rfind();来实现从后往前查找:(使用方法通str.find()一致)。

 查找某个串在str中出现的位置:

五、“取子串”:

使用str.substr();来实现取子串:

 取出某个指定位置的某几个字符:

六、“比较”:

1、使用str.comper();来实现字符串的比较。

2、直接使用‘>’ , ’<’ , ’==’来实现字符串的比较。

比较两个串中的某个位置: 

七、“大小写相互转化”

1、使用transform();搭配::tolower、::toupper进行转换。

2、使用for循环遍历str串每一个单元,遍历时进行ascll码的变更。

 1>/transform方式

2>/循环遍历方式


String的初始化: 

一、

1、定义初始化:

  1. string str();
  2. string str("ABCDE"); //用字符串ABCD来初始化字符串
  3. string str(5,'A'); //用5个A来初始化字符串
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str;
  5. str.assign("hello",3); //将hello的前三个字符赋值给str
  6. cout<<str; //输出hel
  7. return 0;
  8. }

2、输入初始化:

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str;
  5. getline(cin,str); //和c语言的gets();一样 遇到空格不结束输入
  6. cin<<str; //遇到空格和回车都会结束输入
  7. return 0;
  8. }

 二、给string串分配大小空间:

  1. 将str串的大小变为10个单元(即:str[0-9])。若原来长度比10大则裁剪掉超出部分的内容;若原来的程度比10小则把空域部分填充为NULL
  2. str.resize(10);
  3. 将str串的大小变为10个单元(即:str[0-9])。若原来长度比10大则裁剪掉超出部分的内容;若原来的程度比10小则把空域部分填充为'b'
  4. str.resize(10,'b');
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main(){
  5. string str;
  6. str.resize(10,'b');
  7. cout<<str; //输出 bbbbbbbbbb
  8. return 0;
  9. }

 三、给string串填充字符

  1. //将str从第一个单元开始,到最后一个单元全部赋值为'0'。
  2. fill(str.begin(),str.end(),'0');
  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5. string str("abcde");
  6. fill(str.begin(),str.end(),'0');
  7. cout<<str<<endl; //输出 00000
  8. return 0;
  9. }

 四、分割string串

  1. 将str串已+或者-为分隔符分开
  2. strtok(str,"+-");
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. int main(){
  5. string str("123+4-56");
  6. // char str[] = "123+456"; //这两种初值形式都行
  7. //strtok第一个参数要求为char*型 ,若使用string则需要将其转换char型
  8. char *p=strtok((char *)str.c_str(),"+-");
  9. while(p){
  10. cout<<p<<endl;
  11. p=strtok(NULL,"+-");
  12. }
  13. return 0;
  14. }
  15. //输出
  16. 123
  17. 4
  18. 56

String串的增、删、改、查、取子串、比较、大小写转换

一、“增”----插入:

1、使用str.append();进行尾部插入。

  1. //将str1[pos]位置开始的n个字符追加到str的末尾
  2. str.append(str1,pos,n);
  3. //将str1完全追加到str末尾
  4. str.append(str1);
  5. //将str1的前n个字符追加到str的末尾
  6. str.append(str1,n);

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str,str1("abcdef");
  5. str.append(str1,3,2); //将str1[3]开始的2个字符追加到str的末尾
  6. cout<<str; //输出hel
  7. return 0;
  8. }

2、使用str.insert();进行指定位置的插入。

  1. //在str串的0角标位置的前面插入 HHH (HHH的全部字符)
  2. str.insert(0,"HHH"); 
  3. //在str串的0角标位置的前面插入HH (HHH的从0角标开始的两个字符)
  4. str.insert(0,"HHH",0,2); 
  5. //在str串的角标为0的位置前面,插入3个字符 ‘P’
  6. str.insert(0,3,'P');

1>/插入到最前面:

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str("abcdef");
  5. str.insert(0,"HHH");
  6. cout<<str; //输出 HHHabcdef
  7. return 0;
  8. }

2>/插入到中间某指定位置: 

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str("abcdef");
  5. //在角标为3的位置前面,插入"ABCDEF"的从角标0开始的2个字符
  6. str.insert(3,"ABCDE",0,2);
  7. cout<<str; //输出 abcABdef
  8. return 0;
  9. }

3>/插入到末尾:

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str("abcdef");
  5. str+="HHH";
  6. cout<<str;
  7. return 0;
  8. }
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str;
  5. str.append("hello",3); //将hello的前三个字符追加到str的末尾
  6. cout<<str; //输出hel
  7. return 0;
  8. }

二、“删”----删除

使用str.erase();来进行指定位置的删除 :

  1. //将str串从角标位置为0的位置删除3个字符
  2. str.erase(0,3);

 指定位置删除某几个字符:

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str("abcdef");
  5. //将str串从角标位置为0的位置删除3个字符
  6. str.erase(0,3);
  7. cout<<str; //输出 def
  8. return 0;
  9. }

三、“改”----修改/替换:

1、使用str.replace();来实现某个位置开始的几个字符  替换为某几个字符。

  1. //将从下标位置0开始的2字符 替换成HHHH ("HHHH"串的全部)
  2. str.replace(0,2,"HHHH");
  3. //将从下标位置0开始的2个符 替换成ABC ("ABCD"串的前3个字符)
  4. str.replace(0,2,"ABCD",3);
  5. //将从下标位置0开始的2字符 替换成BCD ("ABCDEF"串的下标为1的位置开始的3个字符)
  6. str.replace(0,2,"ABCDEF",1,3);

2、使用str.erase();先删除指定位置的字符,,再使用str.insert();在某个位置插入字符。(使用方法见上文)。

将某几个字符替换成某几个字符:

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str("abcdef");
  5. str.replace(0,2,"ABCDEF",1,2);
  6. cout<<str; //输出 BCcdef
  7. return 0;
  8. }

四、“查”----查找:

查找是String非常重要的一个模块,因为它可以与上面的增、删、改联合到一起嵌套使用。即实现了某特定字符的增、删、改操作。

使用str.find();来实现从前往后查找:

  1. 建议将find函数的结果转换成int型来使用:(以下均是默认如此)
  2. //在str串中查找ABCD首次出现的位置,并返回A的位置。若没找到返回-1
  3. str.find("ABCD");
  4. //在str串中,从str的角标为3位置(即:str[3])开始查找ABCD首次出现的位置,并返回A的位置。若没找到返回-1
  5. str.find("ABCD",3);

使用str.rfind();来实现从后往前查找:(使用方法通str.find()一致)。

 查找某个串在str中出现的位置:

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str("abcdef");
  5. cout<<(int)str.find("bc",1); //输出 1
  6. cout<<(int)str.find("bc",2); //输出-1
  7. return 0;
  8. }

五、“取子串”:

使用str.substr();来实现取子串:

  1. //返回从下标2 开始一直到结尾的string型字符串
  2. s.substr(3);
  3. //返回从下标3 开始的2个字符 的string型字符串
  4. s.substr(3, 2);

 取出某个指定位置的某几个字符:

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str("abcdef");
  5. cout<<str.substr(1,2); //输出 bc
  6. return 0;
  7. }

六、“比较”(仅比较两个串的ASCLL值):

1、使用str.comper();来实现字符串的比较。

  1. //和c语言的strcmp一样 大于返回正数,小于返回负数,等于返回0
  2. str1.compare(str2);
  3. //把str1从角标为a1的位置开始的b1个字符 与str2从a2开始的b2个字符比较,大于返回正数,小于返回负数,等于返回0
  4. str1.compare(a1, b1, str2, a2, b2);

2、直接使用‘>’ , ’<’ , ’==’来实现字符串的比较。

比较两个串中的某个位置: 

  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. string str1("abcdef");
  5. string str2("abcdefg");
  6. cout<<str1.compare(1,5,str2,1,3); //输出 2
  7. return 0;
  8. }

七、“大小写相互转化”

1、使用transform();搭配::tolower、::toupper进行转换。

  1. //第一个参数为要转换的串的开始的位置迭代器,第二个为结束的位置的迭代器,第三个参数为转换结果存储开始位置的迭代器,第四个参数为转换成大写还是小写。
  2. transform(str.begin(),str.end(),str.begin(),::tolower);

2、使用for循环遍历str串每一个单元,遍历时进行ascll码的变更。

 1>/transform方式

  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5. //第三个参数为地址或者迭代器都可以
  6. //前两个参数只能是迭代器
  7. string str("abcdefGHIJklMNopQRStuvwXyZ");
  8. transform(str.begin(),str.end(),str.begin(),::tolower);
  9. cout<<str<<endl; //输出 abcdefghijklmnopqrstuvwxyz
  10. transform(str.begin(),str.end(),&str[0],::toupper);
  11. cout<<str; //输出 ABCDEFGHIJKLMNOPQRSTUVWXYZ
  12. return 0;
  13. }

2>/循环遍历方式

  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int main(){
  5. string str("abcdefGHIJklMNopQRStuvwXyZ");
  6. for(int i=0;i<str.size();++i){
  7. if(str[i]>='A'&&str[i]<='Z')
  8. str[i]+=32;
  9. else if(str[i]>='a'&&str[i]<='z')
  10. str[i]-=32;
  11. }
  12. cout<<str<<endl; //大写部分转换成小写,小写部分转换成大写
  13. //输出 ABCDEFghijKLmnOPqrsTUVWxYz
  14. for(int i=0;i<str.size();++i){
  15. if(str[i]>='A'&&str[i]<='Z')
  16. str[i]+=32;
  17. }
  18. cout<<str<<endl; //输出 abcdefghijklmnopqrstuvwxyz
  19. for(int i=0;i<str.size();++i){
  20. if(str[i]>='a'&&str[i]<='z')
  21. str[i]-=32;
  22. }
  23. cout<<str<<endl; //输出 ABCDEFGHIJKLMNOPQRSTUVWXYZ
  24. return 0;
  25. }

初级小白(在校生)整理以用作学习,若有错误,还望指正,共勉!

初次书写,若存在侵权或其他问题,定立即改正,还望海涵。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号