- 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 - 到期与归零
- 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,并且某些硬件体系结构不允许将负值存储在 char 变量中。因此,字符处理函数将字符作为整数进行处理。
下表总结了字符处理库的功能。使用字符处理库中的函数时,请包含<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')、空格,则返回 1 (' ')、换页符 ('\f')、回车符 ('\r')、水平制表符 ('\t') 或垂直制表符 ('\v'),否则为 0。 |
8 |
int iscntrl( int c ) 如果c是控制字符,则返回1,例如换行符('\n')、换页符('\f')、回车符('\r')、水平制表符('\t')、垂直制表符(' \v')、alert ('\a') 或退格键 ('\b'),否则为 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确定其参数是大写字母 (AZ) 还是小写字母 (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
我们在每个函数中使用条件运算符(?:)来确定是否应在每个测试字符的输出中打印字符串“ is a ”或字符串“ is not a ”。例如,行a指示如果 '8' 是数字(即,如果isdigit返回真(非零)值),则打印字符串“8 is a ”。如果 '8' 不是数字(即,如果isdigit返回 0),则打印字符串“ 8 is not a ”。
实施例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