目录
1、使用str.replace();来实现某个位置开始的几个字符 替换为某几个字符。
2、使用str.erase();先删除指定位置的字符,,再使用str.insert();在某个位置插入字符。(使用方法见上文)。
使用str.rfind();来实现从后往前查找:(使用方法通str.find()一致)。
2、直接使用‘>’ , ’<’ , ’==’来实现字符串的比较。
1、使用transform();搭配::tolower、::toupper进行转换。
2、使用for循环遍历str串每一个单元,遍历时进行ascll码的变更。
String的初始化:
一、
1、定义初始化:
string str(); string str("ABCDE"); //用字符串ABCD来初始化字符串 string str(5,'A'); //用5个A来初始化字符串
#include<iostream> using namespace std; int main(){ string str; str.assign("hello",3); //将hello的前三个字符赋值给str cout<<str; //输出hel return 0; }
2、输入初始化:
#include<iostream> using namespace std; int main(){ string str; getline(cin,str); //和c语言的gets();一样 遇到空格不结束输入 cin<<str; //遇到空格和回车都会结束输入 return 0; }
二、给string串分配大小空间:
将str串的大小变为10个单元(即:str[0-9])。若原来长度比10大则裁剪掉超出部分的内容;若原来的程度比10小则把空域部分填充为NULL。 str.resize(10); 将str串的大小变为10个单元(即:str[0-9])。若原来长度比10大则裁剪掉超出部分的内容;若原来的程度比10小则把空域部分填充为'b'。 str.resize(10,'b');
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
str.resize(10,'b');
cout<<str; //输出 bbbbbbbbbb
return 0;
}
三、给string串填充字符
//将str从第一个单元开始,到最后一个单元全部赋值为'0'。 fill(str.begin(),str.end(),'0');
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string str("abcde");
fill(str.begin(),str.end(),'0');
cout<<str<<endl; //输出 00000
return 0;
}
四、分割string串
将str串已+或者-为分隔符分开 strtok(str,"+-");
#include<iostream>
#include<cstring>
using namespace std;
int main(){
string str("123+4-56");
// char str[] = "123+456"; //这两种初值形式都行
//strtok第一个参数要求为char*型 ,若使用string则需要将其转换char型
char *p=strtok((char *)str.c_str(),"+-");
while(p){
cout<<p<<endl;
p=strtok(NULL,"+-");
}
return 0;
}
//输出
123
4
56
String串的增、删、改、查、取子串、比较、大小写转换:
一、“增”----插入:
1、使用str.append();进行尾部插入。
//将str1[pos]位置开始的n个字符追加到str的末尾 str.append(str1,pos,n); //将str1完全追加到str末尾 str.append(str1); //将str1的前n个字符追加到str的末尾 str.append(str1,n);
#include<iostream>
using namespace std;
int main(){
string str,str1("abcdef");
str.append(str1,3,2); //将str1[3]开始的2个字符追加到str的末尾
cout<<str; //输出hel
return 0;
}
2、使用str.insert();进行指定位置的插入。
//在str串的0角标位置的前面插入 HHH (HHH的全部字符) str.insert(0,"HHH"); //在str串的0角标位置的前面插入HH (HHH的从0角标开始的两个字符) str.insert(0,"HHH",0,2); //在str串的角标为0的位置前面,插入3个字符 ‘P’ str.insert(0,3,'P');
1>/插入到最前面:
#include<iostream>
using namespace std;
int main(){
string str("abcdef");
str.insert(0,"HHH");
cout<<str; //输出 HHHabcdef
return 0;
}
2>/插入到中间某指定位置:
#include<iostream>
using namespace std;
int main(){
string str("abcdef");
//在角标为3的位置前面,插入"ABCDEF"的从角标0开始的2个字符
str.insert(3,"ABCDE",0,2);
cout<<str; //输出 abcABdef
return 0;
}
3>/插入到末尾:
#include<iostream>
using namespace std;
int main(){
string str("abcdef");
str+="HHH";
cout<<str;
return 0;
}
#include<iostream>
using namespace std;
int main(){
string str;
str.append("hello",3); //将hello的前三个字符追加到str的末尾
cout<<str; //输出hel
return 0;
}
二、“删”----删除
使用str.erase();来进行指定位置的删除 :
//将str串从角标位置为0的位置删除3个字符 str.erase(0,3);
指定位置删除某几个字符:
#include<iostream>
using namespace std;
int main(){
string str("abcdef");
//将str串从角标位置为0的位置删除3个字符
str.erase(0,3);
cout<<str; //输出 def
return 0;
}
三、“改”----修改/替换:
1、使用str.replace();来实现某个位置开始的几个字符 替换为某几个字符。
//将从下标位置0开始的2字符 替换成HHHH ("HHHH"串的全部) str.replace(0,2,"HHHH"); //将从下标位置0开始的2个符 替换成ABC ("ABCD"串的前3个字符) str.replace(0,2,"ABCD",3); //将从下标位置0开始的2字符 替换成BCD ("ABCDEF"串的下标为1的位置开始的3个字符) str.replace(0,2,"ABCDEF",1,3);
2、使用str.erase();先删除指定位置的字符,,再使用str.insert();在某个位置插入字符。(使用方法见上文)。
将某几个字符替换成某几个字符:
#include<iostream>
using namespace std;
int main(){
string str("abcdef");
str.replace(0,2,"ABCDEF",1,2);
cout<<str; //输出 BCcdef
return 0;
}
四、“查”----查找:
查找是String非常重要的一个模块,因为它可以与上面的增、删、改联合到一起嵌套使用。即实现了某特定字符的增、删、改操作。
使用str.find();来实现从前往后查找:
建议将find函数的结果转换成int型来使用:(以下均是默认如此) //在str串中查找ABCD首次出现的位置,并返回A的位置。若没找到返回-1 str.find("ABCD"); //在str串中,从str的角标为3位置(即:str[3])开始查找ABCD首次出现的位置,并返回A的位置。若没找到返回-1 str.find("ABCD",3);
使用str.rfind();来实现从后往前查找:(使用方法通str.find()一致)。
查找某个串在str中出现的位置:
#include<iostream>
using namespace std;
int main(){
string str("abcdef");
cout<<(int)str.find("bc",1); //输出 1
cout<<(int)str.find("bc",2); //输出-1
return 0;
}
五、“取子串”:
使用str.substr();来实现取子串:
//返回从下标2 开始一直到结尾的string型字符串 s.substr(3); //返回从下标3 开始的2个字符 的string型字符串 s.substr(3, 2);
取出某个指定位置的某几个字符:
#include<iostream>
using namespace std;
int main(){
string str("abcdef");
cout<<str.substr(1,2); //输出 bc
return 0;
}
六、“比较”(仅比较两个串的ASCLL值):
1、使用str.comper();来实现字符串的比较。
//和c语言的strcmp一样 大于返回正数,小于返回负数,等于返回0 str1.compare(str2); //把str1从角标为a1的位置开始的b1个字符 与str2从a2开始的b2个字符比较,大于返回正数,小于返回负数,等于返回0 str1.compare(a1, b1, str2, a2, b2);
2、直接使用‘>’ , ’<’ , ’==’来实现字符串的比较。
比较两个串中的某个位置:
#include<iostream>
using namespace std;
int main(){
string str1("abcdef");
string str2("abcdefg");
cout<<str1.compare(1,5,str2,1,3); //输出 2
return 0;
}
七、“大小写相互转化”
1、使用transform();搭配::tolower、::toupper进行转换。
//第一个参数为要转换的串的开始的位置迭代器,第二个为结束的位置的迭代器,第三个参数为转换结果存储开始位置的迭代器,第四个参数为转换成大写还是小写。 transform(str.begin(),str.end(),str.begin(),::tolower);
2、使用for循环遍历str串每一个单元,遍历时进行ascll码的变更。
1>/transform方式
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
//第三个参数为地址或者迭代器都可以
//前两个参数只能是迭代器
string str("abcdefGHIJklMNopQRStuvwXyZ");
transform(str.begin(),str.end(),str.begin(),::tolower);
cout<<str<<endl; //输出 abcdefghijklmnopqrstuvwxyz
transform(str.begin(),str.end(),&str[0],::toupper);
cout<<str; //输出 ABCDEFGHIJKLMNOPQRSTUVWXYZ
return 0;
}
2>/循环遍历方式
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string str("abcdefGHIJklMNopQRStuvwXyZ");
for(int i=0;i<str.size();++i){
if(str[i]>='A'&&str[i]<='Z')
str[i]+=32;
else if(str[i]>='a'&&str[i]<='z')
str[i]-=32;
}
cout<<str<<endl; //大写部分转换成小写,小写部分转换成大写
//输出 ABCDEFghijKLmnOPqrsTUVWxYz
for(int i=0;i<str.size();++i){
if(str[i]>='A'&&str[i]<='Z')
str[i]+=32;
}
cout<<str<<endl; //输出 abcdefghijklmnopqrstuvwxyz
for(int i=0;i<str.size();++i){
if(str[i]>='a'&&str[i]<='z')
str[i]-=32;
}
cout<<str<<endl; //输出 ABCDEFGHIJKLMNOPQRSTUVWXYZ
return 0;
}
初级小白(在校生)整理以用作学习,若有错误,还望指正,共勉!
初次书写,若存在侵权或其他问题,定立即改正,还望海涵。