String 类的使用 (c++)

目录

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、定义初始化:

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;
}

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

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学编程!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值