C++c从C中继承了一个与字符相关的函数包,可以简化诸如确定字符是否为大写字符、数字、标点等工作
它就是cctype 在老版中可能是ctype.h
主要的函数以下:(对象都是参数)
- isalnum() : 如果是数字或者字母,则返回true
- isalpha() : 如果是字母,则返回true
- isblank() :如果是空格或水平制表符(\t),返回true
- iscntrl() : 如果是控制字符(),则返回true
- isdigit() : 如果是数字(注意这里是0-9),则返回true
- isgraph() : 如果是除了空格以外的打印字符,返回true
- islower() : 如果是小写字母,返回true
- isprint() : 如果是打印字符(包括空格)返回true
- ispunct() : 如果是标点符号,返回true
- isspace() : 如果是标准空白字符,返回true
- isupper() : 如果是大写字母,返回true
- isxdigit() : 如果为十六进制的数字,返回true
- tolower() : 如果为大写字符,则返回其小写,否则返回其本身
- toupper() : 与上一个函数相反
这里补充一下上面的几个名词:
- 控制字符:
出现于特定的信息文本中,表示某一控制功能的字符。
所有输出在32以下的ASCII表都是这个类型。 - 打印字符:
可打印字符是指除ASCII码0~31及127(共33个)是控制字符, 剩余的都属于可打印字符。 - 标准空白字符:
包括空格、换行符、回车、水平制表符、垂直制表符等
最后是实战练习:输入一段英文,检测其中的字母,标点,空格的数量分别是多少,直接附上代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <cctype>
using namespace std;
int main()
{
cout << "please enter your article to count:\n";
char ch[1000];
int a,b,c;
a=b=c=0;
gets(ch);
for(int i=0;ch[i]!='\0';i++)
{
if(isalpha(ch[i]))
a++;
if(isspace(ch[i]))
b++;
if(ispunct(ch[i]))
c++;
}
cout << "We can get these information:\n";
cout << "There are "<<a<<" letters, "<<b<<" spaces, "<<c<<" punctuations.";
return 0;
}
输出样例:
please enter your article to count:
i am a student, i love my family.
We can get these information:
There are 24 letters, 7 spaces, 2 punctuations.
点个赞呗