C++ 中cctype头文件的使用

头文件cctype(字符处理库)中定义了有关字符判断与处理的库函数,使用前要包含头文件:

#include <cctype>

using namespace  std;

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()  如果参数是小写字符,返回其大写,否则返回该参数

cctype头文件中的常用函数功能主要分为以下两类:

功能一:字符测试
1> 函数原型均为int isxxxx(int)
2> 参数为int, 任何实参均被提升成整型
3> 只能正确处理处于[0, 127]之间的值

如某个字符是否为大写,用isupper()如果参数是大写字母,函数返回true, 还有像isalnum(),如果参数是字母数字,即字母或者数字,函数返回true.下面我们通过一个小示例来查看输出结果:

cout << "iis : " << isupper('b') << "\n";

输出:i is : 0

如果把参数改为'B',则会输出:i is : 1

功能二:字符映射
1> 函数原型为int toxxxx(int)
2> 对参数进行检测, 若符合范围则转换, 否则不变

inttolower(int); 'A'~'Z' ==> 'a'~'z'

int toupper(int); 'a'~'z' ==> 'A'~'Z'

以下程序用循环判断输出ASCII从0~127之间的字符类型

//用循环判断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';
    ;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;
    }
    ;
}

运行结果

cctype头文件(字符处理库)的使用的更多相关文章

  1. cctype头文件中的一些内容

    1. string 标准库 1.1初始化 string s1; 默认构造函数s1为空 string s2(s1); 将s2初始化为s1的一个副本 string s3(“value”); 将s3初始化为 ...

  2. C语言常用的库文件(头文件、函数库)

    C语言常用的库文件(头文件.函数库) C系统提供了丰富的系统文件,称为库文件.C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件,在前面的包含命令中我们已多次使用过.在& ...

  3. .h头文件、 .lib库文件、 .dll动态链接库文件之间的关系

    转自.h头文件. .lib库文件. .dll动态链接库文件之间的关系 h头文件作用:声明函数接口 dll动态链接库作用:含有函数的可执行代码 lib库有两种: (1)静态链接库(Static Liba ...

  4. Golang使用pkg-config自动获取头文件和链接库的方法

    为了能够重用已有的C语言库,我们在使用Golang开发项目或系统的时候难免会遇到Go和C语言混合编程,这时很多人都会选择使用cgo. 话说cgo这个东西可算得上是让人又爱又恨,好处在于它可以让你快速重 ...

  5. VS 2010解决方案添加头文件和动态库

    右键点击项目,选择“properties”, Additional include references:头文件路径,分号隔开. Additional library directories:

  6. C++版本的C标准库头文件的特点

    C++标准库中除了定义C++语言特有的功能外,也兼容了C语言的标准库.C语言的头文件形如name.h,C++则将这些文件命名为cname.也就是去掉了.h后缀,而在文件名name之前添加了字母c,这里 ...

  7. Python语言、编译解释、动态库静态库、编译过程、头文件

    学习Python这门语言首先要了解 什么是编译与解释,什么是连接,什么是动态库与静态库, 什么是编译: 编译就是先把高级语言设计的程序翻译成二进制的机器语言,然后CPU直接执行机器码就可以了.一把翻译 ...

  8. 一个C++引用库的头文件预编译陷阱

    写在前面 老胡最近在工作中,有个场景需要使用一个第三方库,引用头文件,链接库,编译运行,一切都很正常,但是接下来就遇到了一个很诡异的问题,调用该库的中的一个对象方法为对象修改属性的时候,会影响到对象的 ...

  9. C语言中,头文件和源文件的关系(转)

    简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...

随机推荐

  1. Ubuntu将软件(Sublime Text 2为例)锁定到启动器

    Ubuntu中打开某安装好的软件,然后右击启动器(Launcher)上打开的图标就可以将该软件锁定到启动器或者从启动器解锁. 然而,有许多软件下载后直接解压就能用,不需要安装,这种情况采用上述方法锁定 ...

  2. SQLite学习心得

    SQLite是一款很有名气的小型开源跨平台数据库,作为目前最流行的开源嵌入式关系型数据库,在系统结构设计中正在扮演着越来越重要的角色. 本文主要沿着 http://www.cppblog.com/we ...

  3. Qt自定义菜单项

    经常会看到一些菜单的部分项是由几个按钮组成的,如酷狗.QQ.360都有类似菜单,对于常规的菜单项,图标 + 文字 实现一个事件,很容易完成,那么怎么自定义菜单项呢? Qt提供了支持,就是利用QWidg ...

  4. makefile missing separator. Stop

    ifneq ($(KERNELRELEASE),) obj-m := hello.o else PWD := $(shell pwd) KVER := $(shell uname -r) KDIR : ...

  5. 增加用户为SiteCollection的管理员

    1.SiteSettings-->Site collection administrators --> 增加你需要的用户

  6. firefox ie chrome 设置单元格宽度 td width 有bug,不能正常工作。以下方式可以解决

    1. firefox ie chrome 设置单元格宽度 td width 有bug,不能正常工作. 如果是上面一行 和下面一行是分别属于两个table,但是他们的列需要对齐,也就是说分开画的,然后设 ...

  7. google map 点击获取经纬度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 去掉iphone手机滑动默认行为

    /*去掉iphone手机滑动默认行为*/ $('body').on('touchmove', function (event) { event.preventDefault(); });

  9. Spark Streaming揭秘 Day33 checkpoint的使用

    Spark Streaming揭秘 Day33 checkpoint的使用 今天谈下sparkstreaming中,另外一个至关重要的内容Checkpoint. 首先,我们会看下checkpoint的 ...

  10. validate[.unobtrusive]和Bootstrap实现tooltip错误提示

    validate[.unobtrusive]和Bootstrap实现tooltip错误提示 类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此.最终效 ...