stl-string的常用解法

本文介绍了C++中字符串的基本操作,包括定义、长度计算及遍历方法。重点讲解了substr函数的使用,如从不同位置截取字符串,并展示了从右侧截取字符串的两种方法。此外,还探讨了substr在替换字符串字段中的应用,以及与find函数的配合使用。文章通过实例解析了如何利用这些方法进行字符串处理,适合C++初学者和进阶者学习。
摘要由CSDN通过智能技术生成

string基本用法

1、字符串定义,长度,遍历

需要加头文件
#include<string>
.....
int main()
{
	.....
	string s,t;//定义字符串s和t
	cin>>s;//输入的字符串没有空格
	getline(cin,s);//输入的字符串有空格
	int len = s.length();//s.size();都是求字符串长度
	//遍历方式一:数组一样遍历
	for(int i = 0;i <len;i ++{
	    cout << s[i]<<" ";//最简单的遍历,像数组一样
	......
	}
	//C++11的auto遍历
	for(auto i : s)
	   cout<< i <<" ";
	//迭代器遍历,算了吧,太麻烦

substr、find、reverse综合使用,太实用了

1、substr(string, start,< length >):
从string的start位置开始提取字符串 ,length:要提取字符串的长度。
若length为以下任意条件之一时,返回start位置到串尾的所有字符:
length不指定
length为空
length为负数
length大于start到串尾的长度

例如:
data test; 
str='chsh234960b3'; 
strl=subatr(str,5); 
str2=substr(str,5,'');
str3=aubstr(str,5,-3);//当length为负数时,默认从start位罝取所有字符。
str4=aubstr(str,5, 30);
substr中的start为负数时返回空值;

2、substr实现从右侧取数几种方法
从字符串chah234960b3右侧截取5个字符的几种方法
(1).substr(str,length(str)-n+1,n)

str='chah234960b3';
str1=substr(str,length(str)-5+1,5);

输出为:4960b

(2).使用reverse函数

str='chah234960b3';
str1=reverse(substr(reverse(str),1,5));
reverse(str.begin(),str.end());//实现str字符串的完全翻转

输出为:4960b

3、substr除了有字段截取的功能外,还可以用来替换字段
'='在左边: 截取字段

x='123456';
str=substr(x,1,3);

在log中输出结果为: str=123;

'='在右边: 替换字段

x='123456';
substr(x,1,3)='789';

在log中输出结果为: str=789456;

4、substr往往结合find一起使用.

#include<bits/stdc++.h>
using namespace std;
int main() {
	string a="12-456-789-3";
	int pos=0,index=0,start=0;
	//将a分割后的子字符串存到这个answer[]字符串数组中
	string answer[150];
	while(1)
	{	
	//find()查找从指定位置start开始的第一次出现的目标字符串
		pos=a.find('-',start);
		cout<<"pos="<<pos<<endl;
		if(pos!=-1)
		{
		//substr()返回一个从指定位置开始,截取指定的长度的字符串			
      //start表示所需的子字符串的起始位置。字符串中第一个字符的索引为0。
  	answer[index++]=a.substr(start,pos-start);
			cout<<answer[index-1]<<endl;
			start=pos+1;
		}else break;
	}
	answer[index++]=a.substr(start);
	cout<<answer[index-1]<<endl;
	return 0;
}

在这里插入图片描述

练习来喽

1、单词排序
2、地外遗迹
3、最小字典序
4、单词翻转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

漫漫信奥之路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值