- 内容提要
- 前言
- 第 1 章 预备知识
- 第 2 章 开始学习 C++
- 第 3 章 处理数据
- 第 4 章 复合类型
- 第 5 章 循环和关系表达式
- 第 6 章 分支语句和逻辑运算符
- 第 7 章 函数——C++的编程模块
- 第 8 章 函数探幽
- 第 9 章 内存模型和名称空间
- 第 10 章 对象和类
- 第 11 章 使用类
- 第 12 章 类和动态内存分配
- 第 13 章 类继承
- 第 14 章 C++中的代码重用
- 第 15 章 友元、异常和其他
- 第 16 章 string 类和标准模板库
- 第 17 章 输入、输出和文件
- 第 18 章 探讨 C++新标准
- 附录 A 计数系统
- 附录 B C++保留字
- 附录 C ASCII 字符集
- 附录 D 运算符优先级
- 附录 E 其他运算符
- 附录 F 模板类 string
- 附录 G 标准模板库方法和函数
- 附录 H 精选读物和网上资源
- 附录 I 转换为 ISO 标准 C++
- 附录 J 复习题答案
6.3 字符函数库 cctype
C++从 C 语言继承了一个与字符相关的、非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作,这些函数的原型是在头文件 cctype(老式的风格中为 ctype.h)中定义的。例如,如果 ch 是一个字母,则 isalpha(ch)函数返回一个非零值,否则返回 0。同样,如果 ch 是标点符号(如逗号或句号),函数 ispunct(ch)将返回 true。(这些函数的返回类型为 int,而不是 bool,但通常 bool 转换让您能够将它们视为 bool 类型。)
使用这些函数比使用 AND 和 OR 运算符更方便。例如,下面是使用 AND 和 OR 来测试字符 ch 是不是字母字符的代码:
与使用 isalpha( ) 相比:
isalpha( ) 不仅更容易使用,而且更通用。AND/OR 格式假设 A-Z 的字符编码是连续的,其他字符的编码不在这个范围内。这种假设对于 ASCII 码来说是成立的,但通常并非总是如此。
程序清单 6.8 演示一些 ctype 库函数。具体地说,它使用 isalpha( ) 来检查字符是否为字母字符,使用 isdigits( ) 来测试字符是否为数字字符,如 3,使用 isspace( ) 来测试字符是否为空白,如换行符、空格和制表符,使用 ispunct( ) 来测试字符是否为标点符号。该程序还复习了 if else if 结构,并在一个 while 循环中使用了 cin.get(char)。
程序清单 6.8 cctypes.cpp
下面是该程序的运行情况。注意,空白字符计数中包括换行符:
表 6.4 对 cctype 软件包中的函数进行了总结。有些系统可能没有表中列出的一些函数,也可能还有在表中没有列出的一些函数。
表 6.4 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( ) | 如果参数是小写字符,则返回其大写,否则返回该参数 |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论