【长期更】刷PAT好用到哭的函数

1.substr();

功能:获取子串。substr()百度百科

substr()括号中有2个参数,参数依次是 ( 开始,长度),并返回子串。若不写第二个参数则默认到字符串s结束。

substr()在<iostream>头文件下,另外别忘记using namespace std;哟~

用法:

string s = "PAT 233"

string T = s.substr(4,3);//返回从s[4]位置开始,长度为3的子串。string T就是存储返回的串。

cout << T;//输出结果:233

string T = s.substr(4);//不写第二个参数则默认到字符串s结束。输出结果:233

2.stoi();

功能:把字符串转为数字;stoi()函数//记不住函数名?其实是string to int 的简写。

stoi()括号中有3个参数,依次是(字符串,起始位置,2~32进制)。可以把串中内容转化为任意进制的数。第二、第三个参数可以省略不写,不写就是默认是对整个字符串,进制默认10进制。

用法:

string s = "PAT 233"

string T = s.substr(4, 3);
int num = stoi(T);

if(isPrimer(num)) cout << "Yes";

cout << "No";
 

配合substr()真得好用到哭!比如:题目给一字符串,让你判断其中子串中的数字部分是否是素数(18 12月PAT甲第一题,也是PAT乙级中的1094题。传送门:PATB1094题),用substr()只能获取string子串,判断素数是要对数字int进行操作的,你没法对string直接判断,所以需要stoi()的配合把字符串转为数字。Ps:如果事先知道这俩函数,秒ACahhh~

3.to_string();

上面介绍了字符串转数字的函数:stoi(),与之对应,也有数字转字符串的函数:to_string();

用法很简单,参数是数字(int, float,double, long long,还有unsigned 的那几个都行)。

double n = 3.1415926;

string s = to_string(n);

cout << s[0]; //结果是3

cout << s; //结果是3.1415926

4.替代gets();的函数

刚才写博客之前,有一个小伙伴问我:“博主博主,字符串输入有几种方法啊?”。

自从gets()不能在PAT中用了之后(停用原因是gets()不安全),博主就在寻找替代品:

1.首当其冲是string s; cin >> s;这种方法很方便,缺点也明显,因为cin 碰到空格、回车均结束。读不进空格要你何用?(摔)

2.cin.getline();参数是cin.getline(字符指针, 长度(int),  结束符(char));可以读进空格、回车。何为结束符?就是碰到这个符号,就停止输入。像(1)中cin,碰到空格、回车就结束,所以空格、回车就是cin的结束符。只不过这个函数里,结束符是你手动设置的任意字符。

注意:第一个参数要是字符指针,不能是string型。

3.getline();

用法:string s; getline(cin, s,结束符);这是我最常用的。

5.isalpha(); 和isalnum(); 和isdigit();

顾名思义,第一个判断是不是字母,第二个判断是不是字母或数字,第三个判断是不是数字。

这俩函数在 #include <cctype> (点左边看详情),这个头文件下还有几个好用的。

6.c_str();

string s = "hello";

如果你突然想用printf输出输出字符串,而不是cout输出。

这样写?printf("%s", s); 错了。因为printf是C的,string类型是C++的。

正确写法是 : printf("%s",  s.c_str() );  //在字符串后面加上 .c_str();

c_str:返回当前字符串的首字符地址。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值