Учебники

Arduino — Функции персонажей

Все данные вводятся в компьютеры в виде символов, которые включают буквы, цифры и различные специальные символы. В этом разделе мы обсудим возможности C ++ для изучения и управления отдельными символами.

Библиотека обработки символов включает в себя несколько функций, которые выполняют полезные тесты и манипуляции с символьными данными. Каждая функция получает символ, представленный как int, или EOF в качестве аргумента. Символами часто манипулируют как целыми числами.

Помните, что EOF обычно имеет значение -1 и что некоторые аппаратные архитектуры не позволяют хранить отрицательные значения в переменных типа char. Поэтому функции обработки символов обрабатывают символы как целые числа.

В следующей таблице приведены функции библиотеки обработки символов. При использовании функций из библиотеки обработки символов включайте заголовок <cctype> .

S.No. Прототип и описание
1

int isdigit (int c)

Возвращает 1, если c является цифрой, и 0 в противном случае.

2

int isalpha (int c)

Возвращает 1, если c является буквой, и 0 в противном случае.

3

int isalnum (int c)

Возвращает 1, если c является цифрой или буквой, и 0 в противном случае.

4

int isxdigit (int c)

Возвращает 1, если c — шестнадцатеричный символ, и 0 в противном случае.

(См. Приложение D, Системы счисления, для подробного объяснения двоичных, восьмеричных, десятичных и шестнадцатеричных чисел.)

5

int islower (int c)

Возвращает 1, если c строчная буква, и 0 в противном случае.

6

int isupper (int c)

Возвращает 1, если c — заглавная буква; 0 иначе

7

int isspace (int c)

Возвращает 1, если c является символом пробела — символ новой строки (‘\ n’), пробел

(»), подача формы (‘\ f’), возврат каретки (‘\ r’), горизонтальная табуляция (‘\ t’) или вертикальная табуляция (‘\ v’) — и 0 в противном случае.

8

int iscntrl (int c)

Возвращает 1, если c является управляющим символом, таким как символ новой строки (‘\ n’), перевод формы (‘\ f’), возврат каретки (‘\ r’), горизонтальная табуляция (‘\ t’), вертикальная табуляция (‘ \ v ‘), alert (‘ \ a ‘) или backspace (‘ \ b ‘) — и 0 в противном случае.

9

int ispunct (int c)

Возвращает 1, если c — это печатный символ, отличный от пробела, цифры или буквы, и 0 в противном случае.

10

int isprint (int c)

Возвращает 1, если c является печатным символом, включающим пробел (»), и 0 в противном случае.

11

int isgraph (int c)

Возвращает 1, если c — это печатающий символ, отличный от пробела (»), и 0 в противном случае.

int isdigit (int c)

Возвращает 1, если c является цифрой, и 0 в противном случае.

int isalpha (int c)

Возвращает 1, если c является буквой, и 0 в противном случае.

int isalnum (int c)

Возвращает 1, если c является цифрой или буквой, и 0 в противном случае.

int isxdigit (int c)

Возвращает 1, если c — шестнадцатеричный символ, и 0 в противном случае.

(См. Приложение D, Системы счисления, для подробного объяснения двоичных, восьмеричных, десятичных и шестнадцатеричных чисел.)

int islower (int c)

Возвращает 1, если c строчная буква, и 0 в противном случае.

int isupper (int c)

Возвращает 1, если c — заглавная буква; 0 иначе

int isspace (int c)

Возвращает 1, если c является символом пробела — символ новой строки (‘\ n’), пробел

(»), подача формы (‘\ f’), возврат каретки (‘\ r’), горизонтальная табуляция (‘\ t’) или вертикальная табуляция (‘\ v’) — и 0 в противном случае.

int iscntrl (int c)

Возвращает 1, если c является управляющим символом, таким как символ новой строки (‘\ n’), перевод формы (‘\ f’), возврат каретки (‘\ r’), горизонтальная табуляция (‘\ t’), вертикальная табуляция (‘ \ v ‘), alert (‘ \ a ‘) или backspace (‘ \ b ‘) — и 0 в противном случае.

int ispunct (int c)

Возвращает 1, если c — это печатный символ, отличный от пробела, цифры или буквы, и 0 в противном случае.

int isprint (int c)

Возвращает 1, если c является печатным символом, включающим пробел (»), и 0 в противном случае.

int isgraph (int c)

Возвращает 1, если c — это печатающий символ, отличный от пробела (»), и 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» или строка «not a» печататься в выходных данных для каждого тестируемого символа. Например, строка a указывает, что если ‘8’ является цифрой, т. Е. Если isdigit возвращает истинное (ненулевое) значение, то строка «8 is a» печатается. Если ‘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, но пробел не включается.