第十七课 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。
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')、水平制表符 (\v')、垂直制表符('\v')、alert('\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");
isalpha 函数
  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") ;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。