- Arduino 教程
- Arduino - 主页
- Arduino - 概述
- Arduino - 板描述
- Arduino - 安装
- Arduino - 程序结构
- Arduino - 数据类型
- Arduino - 变量和常量
- Arduino - 运算符
- Arduino - 控制语句
- Arduino - 循环
- Arduino - 函数
- Arduino - 字符串
- Arduino - 字符串对象
- Arduino - 时间
- Arduino - 数组
- Arduino 函数库
- Arduino - I/O 函数
- Arduino - 高级 I/O 函数
- Arduino - 字符函数
- Arduino - 数学库
- Arduino - 三角函数
- Arduino 高级
- Arduino - Due 和 Zero
- Arduino - 脉宽调制
- Arduino - 随机数
- Arduino - 中断
- Arduino - 通信
- Arduino - 集成电路
- Arduino - 串行外设接口
- Arduino 项目
- Arduino - 闪烁 LED
- Arduino - 渐变 LED
- Arduino - 读取模拟电压
- Arduino - LED 条形图
- Arduino - 键盘登出
- Arduino - 键盘消息
- Arduino - 鼠标按钮控制
- Arduino - 键盘串口
- Arduino 传感器
- Arduino - 湿度传感器
- Arduino - 温度传感器
- Arduino - 水探测器 / 传感器
- Arduino - PIR 传感器
- Arduino - 超声波传感器
- Arduino - 连接开关
- 电机控制
- Arduino - 直流电机
- Arduino - 伺服电机
- Arduino - 步进电机
- Arduino 和声音
- Arduino - 音调库
- Arduino - 无线通信
- Arduino - 网络通信
- Arduino 实用资源
- Arduino - 快速指南
- Arduino - 实用资源
- Arduino - 讨论
Arduino - 字符函数
所有数据均以字符形式输入到计算机中,包括字母、数字和各种特殊符号。在本部分中,我们讨论 C++ 的能力,以便检查和操作单个字符。
字符处理库包括执行字符数据有用的测试和操作的多个函数。每个函数接收一个字符(表示为 int)或 EOF 作为参数。字符常常像整数一样进行操作。
记住,EOF 通常具有值 -1,而且一些硬件体系结构不允许在字符变量中存储负值。因此,字符处理函数将字符操作为整数。
下表总结了字符处理库的函数。当使用字符处理库中的函数时,请包含头文件 <cctype>。
序号 | 原型和说明 |
---|---|
1 |
int isdigit( int c ) 如果 c 是数字,则返回 1,否则返回 0。 |
2 |
int isalpha( int c ) 如果 c 是字母,则返回 1,否则返回 0。 |
3 |
int isalnum( int c ) 如果 c 是数字或字母,则返回 1,否则返回 0。 |
4 |
int isxdigit( int c ) 如果 c 是十六进制数字字符,则返回 1,否则返回 0。 (请参见附录 D,数字系统,以详细了解二进制、八进制、十进制和十六进制数。) |
5 |
int islower( int c ) 若 c 是小写字母则返回 1,否则返回 0。 |
6 |
int isupper(int c ) 若 c 是大写字母则返回 1,否则返回 0。 |
7 |
int isspace( int c ) 若 c 是空白字符(换行符 ('\n')、空格 (' ')、换页符 ('\f')、回车符 ('\r')、水平制表符 ('\t') 或垂直制表符 ('\v')),则返回 1,否则返回 0。 |
8 |
int iscntrl( int c ) 若 c 是控件字符(例如换行符 ('\n')、换页符 ('\f')、回车符 ('\r')、水平制表符 ('\t')、垂直制表符 ('\v')、警报符 ('\a') 或退格符 ('\b')),则返回 1,否则返回 0。 |
9 |
int ispunct( int c ) 若 c 是除空格、数字或字母之外的可打印字符,则返回 1,否则返回 0。 |
10 |
int isprint( int c ) 若 c 是可打印字符(包括空格 (' ')),则返回 1,否则返回 0。 |
11 |
int isgraph( int c ) 若 c 是除空格 (' ') 之外的可打印字符,则返回 1,否则返回 0。 |
示例
以下示例演示了函数 isdigit、isalpha、isalnum 和 isxdigit 的用法。函数 isdigit 确定其参数是否是数字 (0–9)。函数 isalpha 确定其参数是否是大小写字母 (A-Z) 或小写字母 (a–z)。函数 isalnum 确定其参数是否是大小写字母或数字。函数 isxdigit 确定其参数是否是十六进制数字 (A–F、a–f 和 0–9)。
示例 1
void setup () { Serial.begin (9600); Serial.print ("According to isdigit:\r"); Serial.print (isdigit( '8' ) ? "8 is a": "8 is not a"); Serial.print (" digit\r" ); Serial.print (isdigit( '8' ) ?"# is a": "# is not a") ; Serial.print (" digit\r"); Serial.print ("\rAccording to isalpha:\r" ); Serial.print (isalpha('A' ) ?"A is a": "A is not a"); Serial.print (" letter\r"); Serial.print (isalpha('A' ) ?"b is a": "b is not a"); Serial.print (" letter\r"); Serial.print (isalpha('A') ?"& is a": "& is not a"); Serial.print (" letter\r"); Serial.print (isalpha( 'A' ) ?"4 is a":"4 is not a"); Serial.print (" letter\r"); Serial.print ("\rAccording to isalnum:\r"); Serial.print (isalnum( 'A' ) ?"A is a" : "A is not a" ); Serial.print (" digit or a letter\r" ); Serial.print (isalnum( '8' ) ?"8 is a" : "8 is not a" ) ; Serial.print (" digit or a letter\r"); Serial.print (isalnum( '#' ) ?"# is a" : "# is not a" ); Serial.print (" digit or a letter\r"); Serial.print ("\rAccording to isxdigit:\r"); Serial.print (isxdigit( 'F' ) ?"F is a" : "F is not a" ); Serial.print (" hexadecimal digit\r" ); Serial.print (isxdigit( 'J' ) ?"J is a" : "J is not a" ) ; Serial.print (" hexadecimal digit\r" ); Serial.print (isxdigit( '7' ) ?"7 is a" : "7 is not a" ) ; Serial.print (" hexadecimal digit\r" ); Serial.print (isxdigit( '$' ) ? "$ is a" : "$ is not a" ); Serial.print (" hexadecimal digit\r" ); Serial.print (isxdigit( 'f' ) ? “f is a" : "f is not a"); } void loop () { }
结果
According to isdigit: 8 is a digit # is not a digit According to isalpha: A is a letter b is a letter & is not a letter 4 is not a letter According to isalnum: A is a digit or a letter 8 is a digit or a letter # is not a digit or a letter According to isxdigit: F is a hexadecimal digit J is not a hexadecimal digit 7 is a hexadecimal digit $ is not a hexadecimal digit f is a hexadecimal digit
我们对每个函数使用条件运算符 (?:) 以确定对于每个测试的字符,是否应在输出中打印字符串“ 是”或“ 不是”。例如,行 a 指示:如果 '8' 是一个数字(即,如果 isdigit 返回一个真(非零)值),则打印字符串“8 是”。如果 '8' 不是一个数字(即,如果 isdigit 返回 0),则打印字符串“ 8 不是”。
示例 2
以下示例演示了函数 islower 和 isupper 的用法。函数 islower 确定其参数是否是小写字母 (a–z)。函数 isupper 确定其参数是否是大小写字母 (A–Z)。
int thisChar = 0xA0; void setup () { Serial.begin (9600); Serial.print ("According to islower:\r") ; Serial.print (islower( 'p' ) ? "p is a" : "p is not a" ); Serial.print ( " lowercase letter\r" ); Serial.print ( islower( 'P') ? "P is a" : "P is not a") ; Serial.print ("lowercase letter\r"); Serial.print (islower( '5' ) ? "5 is a" : "5 is not a" ); Serial.print ( " lowercase letter\r" ); Serial.print ( islower( '!' )? "! is a" : "! is not a") ; Serial.print ("lowercase letter\r"); Serial.print ("\rAccording to isupper:\r") ; Serial.print (isupper ( 'D' ) ? "D is a" : "D is not an" ); Serial.print ( " uppercase letter\r" ); Serial.print ( isupper ( 'd' )? "d is a" : "d is not an") ; Serial.print ( " uppercase letter\r" ); Serial.print (isupper ( '8' ) ? "8 is a" : "8 is not an" ); Serial.print ( " uppercase letter\r" ); Serial.print ( islower( '$' )? "$ is a" : "$ is not an") ; Serial.print ("uppercase letter\r "); } void setup () { }
结果
According to islower: p is a lowercase letter P is not a lowercase letter 5 is not a lowercase letter ! is not a lowercase letter According to isupper: D is an uppercase letter d is not an uppercase letter 8 is not an uppercase letter $ is not an uppercase letter
示例 3
以下示例演示了函数 isspace、iscntrl、ispunct、isprint 和 isgraph 的用法。
函数 isspace 确定其参数是否是空白字符,例如空格 (' ')、换页符 ('\f')、换行符 ('\n')、回车符 ('\r')、水平制表符 ('\t') 或垂直制表符 ('\v')。
函数 iscntrl 确定其参数是否是控件字符,例如水平制表符 ('\t')、垂直制表符 ('\v')、换页符 ('\f')、警报符 ('\a')、退格符 ('\b')、回车符 ('\r') 或换行符 ('\n')。
函数 ispunct 确定其参数是否是除空格、数字或字母之外的可打印字符,例如 $、#、(、)、[、]、{、}、;、: 或 %。
函数 isprint 确定其参数是否是可以在屏幕上显示的字符(包括空格字符)。
函数 isgraph 测试与 isprint 相同的字符,但不包括空格字符。
void setup () { Serial.begin (9600); Serial.print ( " According to isspace:\rNewline ") ; Serial.print (isspace( '\n' )? " is a" : " is not a" ); Serial.print ( " whitespace character\rHorizontal tab") ; Serial.print (isspace( '\t' )? " is a" : " is not a" ); Serial.print ( " whitespace character\n") ; Serial.print (isspace('%')? " % is a" : " % is not a" ); Serial.print ( " \rAccording to iscntrl:\rNewline") ; Serial.print ( iscntrl( '\n' )?"is a" : " is not a" ) ; Serial.print (" control character\r"); Serial.print (iscntrl( '$' ) ? " $ is a" : " $ is not a" ); Serial.print (" control character\r"); Serial.print ("\rAccording to ispunct:\r"); Serial.print (ispunct(';' ) ?"; is a" : "; is not a" ) ; Serial.print (" punctuation character\r"); Serial.print (ispunct('Y' ) ?"Y is a" : "Y is not a" ) ; Serial.print ("punctuation character\r"); Serial.print (ispunct('#' ) ?"# is a" : "# is not a" ) ; Serial.print ("punctuation character\r"); Serial.print ( "\r According to isprint:\r"); Serial.print (isprint('$' ) ?"$ is a" : "$ is not a" ); Serial.print (" printing character\rAlert "); Serial.print (isprint('\a' ) ?" is a" : " is not a" ); Serial.print (" printing character\rSpace "); Serial.print (isprint(' ' ) ?" is a" : " is not a" ); Serial.print (" printing character\r"); Serial.print ("\r According to isgraph:\r"); Serial.print (isgraph ('Q' ) ?"Q is a" : "Q is not a" ); Serial.print ("printing character other than a space\rSpace "); Serial.print (isgraph (' ') ?" is a" : " is not a" ); Serial.print ("printing character other than a space "); } void loop () { }
结果
According to isspace: Newline is a whitespace character Horizontal tab is a whitespace character % is not a whitespace character According to iscntrl: Newline is a control character $ is not a control character According to ispunct: ; is a punctuation character Y is not a punctuation character # is a punctuation character According to isprint: $ is a printing character Alert is not a printing character Space is a printing character According to isgraph: Q is a printing character other than a space Space is not a printing character other than a space