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型。
用法: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:返回当前字符串的首字符地址。