头文件
1.<string.h> : <string.h>是C版本的头文件,包含比如strcpy、strcat之类的字符串处理函数。
2.<cstring>:在C++标准化的过程中,string.h头文件成了cstring头文件。但是其实现却是相同的或是兼容以前的<sring.h>的。
3.<string> : <string>是C++标准定义的头文件,它定义了一个string的字符串类,里面包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。但<string>又包含了老的C版本的字符串操作如strcpy、strcat等,这就相当于,在<string>的文件中除了定义自己的string类之外,还加了一个#include<string.h>一句包含了C版本的字符串操作。使用<string>头文件后,可声明string对象,但在<string.h>或<cstrnrig>中不可这样做。
常用函数
以下介绍头文件<string>中string对象常用函数。
1. size()和length():返回string对象的字符个数,他们执行效果相同。
2. to_string(): 将数字常量转化为字符串。(将字符型变量转化为整型变量的方法:'1'-'0'=1)
3. stoi(): 将字符串(字符串显示为int类型)转化为十进制数据。
4. substr(i,j): 返回下标从i开始截取j位的子串。
5. append(n,c): 末尾添加字符n个字符c。
一些函数
- 判断一个字符是否是数字 isdigit()
- 判断一个字符是否是字母 isalpha()
- 判断一个字符是否是数字或字母 isalnum()
字符串处理例题
PAT-乙级-1002-写出这个数 (字符串与整型数据的转化)
https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384
PAT-乙级-1106-换个格式输出整数
https://pintia.cn/problem-sets/994805260223102976/problems/994805318855278592
PAT-乙级-1009-说反话 (STL库stack与字符串)
https://pintia.cn/problem-sets/994805260223102976/problems/994805314941992960
PAT-乙级-1014-福尔摩斯的约会 (<cctype>头文件中一些函数的用法)
https://pintia.cn/problem-sets/994805260223102976/problems/994805308755394560
PAT-乙级-1021-个位数的统计 (字符型与整型的转化)
https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296
PAT-乙级-1024-科学计数法
https://pintia.cn/problem-sets/994805260223102976/problems/994805297229447168
PAT-乙级-1031-查验身份证
https://pintia.cn/problem-sets/994805260223102976/problems/994805290334011392
PAT-乙级-1048-数字加密 (数字以字符串形式输入输出,中间整型桥梁转化)
https://pintia.cn/problem-sets/994805260223102976/problems/994805276438282240
PAT-乙级-1052-卖个萌(vector二维string数组)
https://pintia.cn/problem-sets/994805260223102976/problems/994805273883951104
PAT-乙级-1054-求平均值(sscanf和sprintf函数的使用)
https://pintia.cn/problem-sets/994805260223102976/problems/994805272659214336
PAT-乙级-1058-选择题(吸收多余输入,vector和set的应用)
https://pintia.cn/problem-sets/994805260223102976/problems/994805270356541440
PAT-乙级-1067-试密码 (用getline含空格输入,记得吸收第一行上面的换行符getchar())
https://pintia.cn/problem-sets/994805260223102976/problems/994805266007048192
PAT-乙级-1081-检查密码
https://pintia.cn/problem-sets/994805260223102976/problems/994805261217153024
PAT-乙级-1084-外观数列
https://pintia.cn/problem-sets/994805260223102976/problems/994805260583813120
PAT-乙级-1086-就不告诉你
https://pintia.cn/problem-sets/994805260223102976/problems/1038429065476579328
PAT-乙级-1093-字符串A+B (Hash数组)
https://pintia.cn/problem-sets/994805260223102976/problems/1071785884776722432