
- 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