复试上机指南之小技巧(3)

String使用技巧

关于一些使用的技巧,在上机的时候关于字符串的题目一般还是比较多的,其实做了一些题,感觉字符串用不好的根本原因还是在一些库函数没有真正的了解,思维固然重要,但是有的时候方法就摆在那,但是不知道就很颓,所以大道至简还是基础的问题,总结就是为了发现不足弥补不足,纯干活输出。

一、输入的一些技巧
  1. 单个字符串的输入输出
string str;
cin>>str;
cout<<str<<endl;
  1. 循环输入多个字符串
string str;
vector<string>res;
while(cin>>str){
	if(str=="00"){
		break;
	}
	res.push_back(str);
}
二、字符串的排序
  1. 按照字典排序
string s;
sort(s.begin(),s.end());
  1. 自定义排序(按照长度排序)
bool cmp(string s1,string s2){
	return s1.length()<s2.length();
}
string s;
vector<string>res;
sort(res.begin(),res.end(),cmp);
三、截取特定的字符串
  1. 一串字符串,要求能识别串中的空格、逗号、句号,并将串中的单词出现的次数保存最后输出。
int st=-1,ed=-1;//标记开始位置
int flag = 0//表示是否开始记录单词
string s,s1;
getline(cin,s);
for(int i=0;i<s.length();i++){
	if(flag==0){
		if(s[i]>='a'&&s[i]<='z' || s[i]>='A'&&s[i]<='Z'){
			flag=1;//表示已经开始标记了
			st=i;//表示已经开始标记的位置
		}
	}else if(flag==1){
		if(s[i]==' '||s[i]==','|| s[i]='.'){
			ed=i;
			s1=s.substr(st,ed-st);//表示从第一个标记位置st开始,到第一个特殊字符出现位置之间的字符串给s1,也就是一个单词.
			a[s1]++;
			flag=0;//进行下一个单词的标记
			st=-1//开始位置标记为-1
		}
	}
}
if(st!=-1){//最后一个还是单词的话,在len
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

li_jeremy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值