c++字符串:提取子字符串,比较大小,搜索字符串,插入字符串,替换字符串,删除字符串总结

1.提取子字符串:

void tiqu()
{
	std::string str1 = "0123456789";

	std::string str2(str1,0,6);//str2为str1从第0位开始连续的6个字符组成的字符串 
	std::cout << str2 << std::endl;
	
	std::string str3 = str1.substr(2,4);//str3 为str1从第2位开始连续 四个字符组成的字符串 
	std::cout << str3 << '\n';
}

运行结果:
在这里插入图片描述

2,比较字符串大小

void bijiao()
{
	std::string str1 = "abcdefg";
	std::string str2("ABCDEFG");
	std::string str3(str1,0,7);//str3 == str1
	std::string str4 = str2.substr(0,7);// str4 == str2
	
	std::cout << str1.compare(str2) << '\n'; //str1 > str2,输出1 
	std::cout << str2.compare(str1) << '\n'; //str1 < str2,输出-1 
	std::cout << str1.compare(str3) << '\n'; //str1 = str3,输出0 
	std::cout << str1.compare(0,2,str2,2,4) << '\n'; // 比较str1子字符串"ab" 和 str2子字符串"CDEF".输出1
	std::cout << str1.compare(0,2,str1,3,5) << '\n';// 比较“ab”和“DEF”,S输出-1; 
	
	if (str1 > str2) // 类似数字的比较 
		std::cout << str1 <<  " > " << str2 << '\n';
	if (str1 <= str2)
		std::cout << str1 << " <= " << str2 << '\n';
	if (str1 == str3)
		std::cout << str1 << " = " << str3 <<'\n';
}

运行结果:
在这里插入图片描述

3,在一个字符串中搜索另一个字符串

void sosuo()
{
	std::string str1("abcdefghijk");
	std::string str2("12345678910");
	std::string str3 = "cde";
	
	std::cout << str1.find(str3,2) << '\n';//在str1中找str3,从str1的第三个字符开始寻找,返回首次出现的位置
	//还可写成std::cout << str1.find("cde",2) << '\n';
	std::cout << str2.find(str3,0) << '\n' ;// 寻找不到,返回string::npos(是string::size_type类型的)
	//0可以不写 
	if (str2.find(str3) == std::string::npos)
		std::cout << str2 << "中找不到" << str3 << '\n'; 
}

运行结果:
在这里插入图片描述

4,在一个字符串中插入另一个字符串

void charru()
{
	std::string str1 = "abcdefghijk";
	std::string str2 = "12345678910";
	
	std::cout << str1.insert(0,str2) << '\n';//在指定位置插入字符串
	str1 = "abcdefghijk";
	std::cout << str1.insert(3,str2,1,3) << '\n';//在指定位置插入str2从第二位开始的连续三个字符,即“234”
	str1 = "abcdefghijk";
	std::cout << str1.insert(1,3,'0') << '\n'; //在指定位置连续插入三个0(等价于str1,insert(1,"000")
} 

运行结果:
在这里插入图片描述

5,用一个字符串替换另一个字符串一部分

void tihuang()
{
	std::string str1 = "abcdefghijk";
	std::string str2 = "12345678910";
	
	std::cout << str1.replace(1,2,str2) << '\n';//str1的“bc”用str2替换
	str1 = "abcdefghijk";
	std::cout << str1.replace(2,5,str2,0,3) << '\n';//str1的“cdefg”用str2的“123”替换
	str1 = "abcdefghijk";
	std::cout << str1.replace(2,2,5,'0') << '\n';// str1de “cd”用5个0替换(等价于str1.replace(2,2,"00000")) 
}

运行结果:
在这里插入图片描述

6,删除一个字符串的一部分

void shangchu()
{
	std::string str1 = "123456789";
	std::string str2("3456");
	int length = str2.length(); 
	
	if (str1.find(str2) != std::string::npos)
	{
		std::cout << str1.erase(str1.find(str2),length) << std::endl;//删除str1中从 str1.find(str2)到 str2.length(str2)部分,也就是删除str1中第一次出现的str2 
	}
}

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值