string知识点总结

字符串的输入输出

#include <bits/stdc++.h>
using namespace std;

int main(){
	string a1;//生成空字符的字符串 
	cout<<a1<<endl;
	
	string a2("hello world!");//字符串为hello world 
	cout<<a2<<endl;
	
	char x3[]={"happy everday"};//char类型字符数组可以直接复制进string形成字符串 
	string a3(x3);
	cout<<a3<<endl;
	
	string a4(a2);//直接复制相同类型 
	cout<<a4<<endl;
	
	string a5(10,'i');//(num,char c)包含num个c字符的字符串 
	cout<<a5<<endl;
	
	//输入输出和普遍方法相同
	string a6;
	cin>>a6;//(遇到空白字符【Tab,回车,空格键】结束) 
	cout<<a6<<endl;

字符串的长度 length

(不包括结束符\0)

string a("hello world!");
	int b=a.length();
	cout<<b<<endl; 

字符串的连接 append

在这里插入图片描述

//字符串的连接 append(主要是头尾)
	a2.append(a3);//将string类型 a3连接到a2后,放在a2里 
	cout<<"a2&a3   "<<a2<<endl;

	a2.append(6,'i');//(num,char c)将num个c连接到a2后 
	cout<<a2<<endl;
	
	a2.append(x3);//将char* 类型 c3连接到a2后,放在a2里 
	cout<<"a2&x3    "<<a2<<endl;

字符串的插入 insert

在这里插入图片描述

	字符串的插入 insert(主要是中间)
	string c1("abcdefghijkl");
	string c2("0000000");
	c1.insert(3,c2);//(pos, ),pos:从pos位置的前面开始插入 
	cout<<c1<<endl;

字符串的比较 compare

在这里插入图片描述

//	字符串的比较 compare ( >:正数 )( =:0 )( <:负数 )[字符串的比较时我觉得和字母的ACSⅡ有关系,在ACSⅡ中a<b ]
	string b("abc");
	string b1("aab");
	string b2("abcdef");
	string b3("abc");
	int result1=b.compare(b1);
	int result2=b.compare(b2);
	int result3=b.compare(b3);
	cout<<result1<<endl<<result2<<endl<<result3<<endl;
	char b4[]="ab";
	int result4=b.compare(b4);
	cout<<result4<<endl;

字符串的查找 find

在这里插入图片描述

//	字符串的查找  find 第一个字符位置为0;-1表示未找到 
	string c("abcdefghijkl");
	int ans1=c.find('d',0);//int find(  ,int pos);pos表示起始的查找位置(即从pos位置开始向后查找) 
	int ans2=c.find("bcd",0);
	int ans3=c.find("bd",0);
	cout<<ans1<<endl<<ans2<<endl<<ans3<<endl;
	string c1("bcd");
	char c2[]="def";
	int ans4=c.find(c1,0);
	int ans5=c.find(c2,0);
	cout<<ans4<<endl<<ans5<<endl;

字符串的替换 replace

在这里插入图片描述

//	字符串的替换 replace 
	string c1("abcdefghijkl");
	cout<<"before"<<endl<<c1<<endl;
	c1.replace(2,3,"123456");//(int pos,int n,插入内容)pos:从第pos个位置开始插入 n: n个字符被替换 (取缔从pos到pos+n的位置) 
	cout<<"after"<<endl<<c1<<endl;
	string c2("abcdefghijkl");
	cout<<"before"<<endl<<c2<<endl;
	c2.replace(2,5,10,'i');//插入10个'i' 
	cout<<"after"<<endl<<c2<<endl;

字符串的删除 erase

在这里插入图片描述

//	字符串的删除 erase 
	string c1("abcdefghijkl");
	cout<<"before"<<endl<<c1<<endl;
	c1.erase(2,9);//(pos,n)从pos的位置开始删除n个字符 
	cout<<"after"<<endl<<c1<<endl;

提取子串 substr

//	提取子串  substr
	string c1("abcdefghijkl");
	string kindc1=c1.substr(2,6);//(pos,n)从pos的位置开始提取n个字符 
	cout<<kindc1<<endl;

总代码

(可以复制自己运行试试帮助理解):

#include <bits/stdc++.h>
using namespace std;

int main(){
//	string a1;//生成空字符的字符串 
//	cout<<a1<<endl;
//	
//	string a2("hello world!");//字符串为hello world 
//	cout<<a2<<endl;
//	
//	char x3[]={"happy everday"};//char类型字符数组可以直接复制进string形成字符串 
//	string a3(x3);
//	cout<<a3<<endl;
//	
//	string a4(a2);//直接复制相同类型 
//	cout<<a4<<endl;
//	
//	string a5(10,'i');//(num,char c)包含num个c字符的字符串 
//	cout<<a5<<endl;
//	
//	//输入输出和普遍方法相同
//	string a6;
//	cin>>a6;//(遇到空白字符【Tab,回车,空格键】结束) 
//	cout<<a6<<endl;


//字符串的连接 append(主要是头尾)
//	a2.append(a3);//将string类型 a3连接到a2后,放在a2里 
//	cout<<"a2&a3   "<<a2<<endl;
//
//	a2.append(6,'i');//(num,char c)将num个c连接到a2后 
//	cout<<a2<<endl;
//	
//	a2.append(x3);//将char* 类型 c3连接到a2后,放在a2里 
//	cout<<"a2&x3    "<<a2<<endl; 
	
	
	
//	字符串的比较 compare ( >:正数 )( =:0 )( <:负数 )[字符串的比较时我觉得和字母的ACSⅡ有关系,在ACSⅡ中a<b ]
//	string b("abc");
//	string b1("aab");
//	string b2("abcdef");
//	string b3("abc");
//	int result1=b.compare(b1);
//	int result2=b.compare(b2);
//	int result3=b.compare(b3);
//	cout<<result1<<endl<<result2<<endl<<result3<<endl;
//	char b4[]="ab";
//	int result4=b.compare(b4);
//	cout<<result4<<endl;
	
	
//	字符串的查找  find 第一个字符位置为0;-1表示未找到 
//	string c("abcdefghijkl");
//	int ans1=c.find('d',0);//int find(  ,int pos);pos表示起始的查找位置(即从pos位置开始向后查找) 
//	int ans2=c.find("bcd",0);
//	int ans3=c.find("bd",0);
//	cout<<ans1<<endl<<ans2<<endl<<ans3<<endl;
//	string c1("bcd");
//	char c2[]="def";
//	int ans4=c.find(c1,0);
//	int ans5=c.find(c2,0);
//	cout<<ans4<<endl<<ans5<<endl;
	
//	字符串的替换 replace 
//	string c1("abcdefghijkl");
//	cout<<"before"<<endl<<c1<<endl;
//	c1.replace(2,3,"123456");//(int pos,int n,插入内容)pos:从第pos个位置开始插入 n: n个字符被替换 (取缔从pos到pos+n的位置) 
//	cout<<"after"<<endl<<c1<<endl;
//	string c2("abcdefghijkl");
//	cout<<"before"<<endl<<c2<<endl;
//	c2.replace(2,5,10,'i');//插入10个'i' 
//	cout<<"after"<<endl<<c2<<endl;
	
//	字符串的插入 insert(主要是中间)
//	string c1("abcdefghijkl");
//	string c2("0000000");
//	c1.insert(3,c2);//(pos, ),pos:从pos位置的前面开始插入 
//	cout<<c1<<endl;
	
//	字符串的删除 erase 
//	string c1("abcdefghijkl");
//	cout<<"before"<<endl<<c1<<endl;
//	c1.erase(2,9);//(pos,n)从pos的位置开始删除n个字符 
//	cout<<"after"<<endl<<c1<<endl;
	
//	提取子串  substr
//	string c1("abcdefghijkl");
//	string kindc1=c1.substr(2,6);//(pos,n)从pos的位置开始提取n个字符 
//	cout<<kindc1<<endl;
//	
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值