find()、reverse()、stoll()和to_string()的巧用
查看原帖
find()、reverse()、stoll()和to_string()的巧用
857735
Frank2010楼主2023/3/21 18:45

你是否像我一样,

是一名小小蒟蒻——

判断不了类型、反转不会和去前导零去不干净(没错,就是我)。

那么——

你们将认识四个新函数——

find()find()reverse()reverse()stoll()stoll()to_string()to\_string()

  1. find()find()函数

find()find(),即寻找函数,需搭配stringstring类使用。

例:

#include<iostream>
#include<cstdio>
using namespace std;
string s="a___a____a";
int main(){
	printf("%d\n",s.find('a'));//输出a第一次出现的位置下标
	printf("%d\n",s.find('a',1));//输出从下标1开始,a第一次出现的位置下标
	printf("%d\n",s.find('a',6));//输出从下标6开始,a第一次出现的位置下标
	printf("%d",s.find('b'));//若找不到,则输出-1 
	return 0;
}

则输出:

0
4
9
-1

那么:

N.find('.');

返回的就是小数点的下标。

if(N.find('.')!=-1)

就是判断是否为小数。

  1. reverse()reverse()

reverse()reverse(),即反转函数,头文件为:

#include<algorithm>

例:

#include<algorithm>
#include<iostream>
#include<cstdio>
using namespace std;
string s="a___a____a";
int main(){
	reverse(s.begin(),s.end());
	cout<<s;
	return 0;
}

则输出:

a____a___a
  1. stoll()stoll()

(不要问为什么不用stoi,问就是作者就是这样intint存不下而RE的)

stoll()stoll(),即stringstring类转long longlong\ long类,头文件为:

#include<string>

这还不是最主要的,他还可以去前导00!!!

例:

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string s1="00005",s2="00000";
int main(){
	printf("%lld\n%lld",stoll(s1),stoll(s2));
	return 0;
}

则输出:

5
0
  1. to_string()to\_string()

to_string()to\_string()的存在即是为了对付小数去后导00的情况,头文件跟stoll一样,为:

#include<string>

既然是先反转再去前导00,那么为什么不能反过来?

即:先去前导00,再去旋转。

那么stringstring转成了long longlong\ long,再怎么转回stringstring来反转呢?

to_string()to\_string()就是这样恰到好处:

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
string s="0000506";
int main(){
	s=to_string(stoll(s));
	reverse(s.begin(),s.end());
	cout<<s;
	return 0;
}

则输出:

605

(相信大家在了解了这四个函数之后,一定能AC——)

2023/3/21 18:45
加载中...