cctype:你说,你继续说

#include<cctype>概述

#include<cctype>是一个很有用的头文件,可以帮你做一些很简单以前必须用函数的事。

#include<cctype>部分函数

1.isalnum()

检查字符c是十进制数还是大写还是小写字母。如果是,则返回true;如果不是,则返回false2.isalpha()

检查字符c是否是字母。如果是,则返回true;如果不是,则返回false3.isblank()

检查字符c是否为空白字符。空白字符是用于分隔文本行内的单词的空格字符。如果是,则返回true;如果不是,则返回false4.iscntrl() 

检查c是否是控制字符。控制字符是不占用显示器上打印位置的字符(这与可打印字符相反,用isprint()检查)。对于标准ASCII字符集(由“C”语言环境使用),控制字符是ASCII码0x00(NUL)和0x1f(US)之间加上0x7f(DEL)的字符。

5.isdigit() 

检查字符是否为十进制数字,检查c是否是十进制数字字符。小数位是以下任何一个:"0 1 2 3 4 5 6 7 8 9"

6.isgraph() 

检查字符是否可以图形表示,检查c是否是具有图形表示的字符。带有图形表示的字符是除了空格字符(”)以外都可以打印的字符(由isprint()确定)。

7.islower() 

检查字符是否为小写字母,检查c是否是小写字母。

请注意,所考虑的字母可能取决于所使用的语言环境; 在默认的C语言环境中,小写字母是以下任何一种:"a b c d e f g h i j k l m n o p q r s t u v w x y z"。

其他语言环境可能会将字符的不同选择视为小写字符,但永远不会对iscntrl()isdigit()ispunct()isspace()返回true8.isprint() 

检查字符是否可打印,检查c是否是可打印的字符。可打印字符是在显示器上占据打印位置的字符(这与控制字符相反,使用iscntrl()进行检查)。

对于标准ASCII字符集(由“C”语言环境使用),打印字符全部使用大于0x1f(US)的ASCII码,但0x7f(DEL)除外。 
isgraph()对于与isprint()相同的情况返回true,除了空格字符(' '),它在使用isprint()检查时返回true,但在使用isgraph()检查时返回false9.ispunct() 

检查字符是否是标点符号,检查c是否是标点符号。标准的C语言环境认为标点字符是非字母数字(如isalnum())中的所有图形字符(如isgraph())。

其他语言环境可能会将不同的字符选择为标点符号,但无论如何它们都是isgraph()而不是isalnum()10.isspace() 

检查字符是否为空白,检查c是否是空格字符。

#include<cctype>函数功能

功能一:字符测试

  1. 函数原型均为int isxxxx(int)
  2. 参数为int, 任何实参均被提升成整型
  3. 只能正确处理处于[0, 127]之间的值
    在这里插入图片描述
如某个字符是否为大写,用isupper()如果参数是大写字母,函数返回true, 还有像isalnum(),如果参数是字母数字,即字母或者数字,函数返回true.下面我们通过一个小示例来查看输出结果:
cout << "i is : " << isupper('b') << "\n";
输出:i is : 0
如果把参数改为'B',则会输出:i is : 1

功能二:字符映射

  1. 函数原型为int toxxxx(int)
  2. 对参数进行检测, 若符合范围则转换, 否则不变
    在这里插入图片描述
int tolower(int); 'A'~'Z' ==> 'a'~'z'
int toupper(int); 'a'~'z' ==> 'A'~'Z'

以下是一个测试程序(测试#include<cctype>函数)

//用循环判断ASCII从0~127之间的字符类型
/*
cctype中的常用函数
函数名称   返回值
isalnum()  如果参数是字母数字,即字母或者数字,函数返回true
isalpha()  如果参数是字母,函数返回true
iscntrl()  如果参数是控制字符,函数返回true
isdigit()  如果参数是数字(0-9),函数返回true
isgraph()  如果参数是除空格之外的打印字符,函数返回true
islower()  如果参数是小写字母,函数返回true
isprint()  如果参数是打印字符(包括空格),函数返回true
ispunct()  如果参数是标点符号,函数返回true
isspace()  如果参数是标准空白字符,如空格、换行符、水平或垂直制表符,函数返回true
isupper()  如果参数是大写字母,函数返回true
isxdigit() 如果参数是十六进制数字,即0-9、a-f、A-F,函数返回true
tolower()  如果参数是大写字符,返回其小写,否则返回该参数
toupper()  如果参数是小写字符,返回其大写,否则返回该参数
*/
#include <iostream>
#include <cctype>
using namespace std;
int main(){
	unsigned char c='\0';
	for(;(int)c<=127;c++){
		cout<<"ASCII为 "<<(int)c<<" 的字符为 ";
		if(iscntrl(c)){//判断是否为控制字符
			cout<<(iscntrl(c)?"控制字符  ":"");  
		    cout<<(isspace(c)?"标准空白字符,如空格、换行符、水平或垂直制表符":"");		
		}
		else{//非控制字符			
            cout<<c<<" ";
			cout<<(isprint(c)?"打印字符(包括空格)  ":""); 
			cout<<(isgraph(c)?"除空格之外的打印字符  ":"");
			cout<<(isalnum(c)?"字母数字  ":"");
			cout<<(isalpha(c)?"字母  ":"");   
			cout<<(islower(c)?"小写字母  ":"");
			cout<<(isupper(c)?"大写字母  ":"");   
			cout<<(isdigit(c)?"数字(0-9)  ":"");
			cout<<(isxdigit(c)?"十六进制数字(0-9,A-F,a-f)  ":"");			  
			cout<<(ispunct(c)?"标点符号  ":"");
		}
		cout<<endl;
		cout<<"============================================="<<endl;//输出一条分割线 
	}
	return 0;
}
//这是第二个示例代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cctype>
using namespace std;
/*快读,没啥用
int readn(){
    char c;
    bool f=0;
    int n=0;
    c=getchar();
    while(!isdigit(c))
    {
        if(c=='-')f=1;
        c=getchar();
    }
    do
    {
        n=n*10+(c-'0');
        c=getchar();
    }while(isdigit(c));
    if(f)return -n;
    else return n;
}
*/
string readstr(){
    char c;
    int k=0;
    char z[200];
    c=getchar();
    while(!isalpha(c)&&!isdigit(c)){//如果不是英文字母和数字的话,继续读入
        c=getchar();
    }
    do{
        z[k]=c;k++;
        c=getchar();
    }while(isalpha(c)||isdigit(c));
    z[k]='\0';
    return z;
}
int main(){
    string c;
    c=readstr();//将读入的C串转换
    cout<<c<<endl;
    return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值