Функции классификации и преобразования символов С++

Функции классификацииРанее, в статье по «библиотечным функциям» мы показывали вам различные заголовки, которые предоставляют многочисленные функции, работающие с разными типами данных. Заголовок <cctype.h> является одним из таких заголовков, который содержит набор функций, классифицирующих отдельные символы.

Функции, объявленные в заголовке <cctype.h>, принимают один символ (эквивалент int) в качестве параметра и возвращают целочисленное значение, которое может быть либо логическим, либо символьным значением. Значение 0 (ноль) указывает на ложь, а значение, отличное от 0 (не ноль), указывает на правду.

Эти односимвольные функции можно использовать в программе, включив заголовок <cctype.h>. Эти функции широко используются и считаются чрезвычайно полезны в программировании на C++ для тестирования и преобразования символов или манипулирования ими.

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

Символьные Функции C++

Символьные функции C++ — это функции, которые принимают в качестве параметра только один символ (приведенный к типу int) и возвращают результат. Это могут быть функции классификации, такие как isalpha, isalnum, isdigit, islower, isupper и т. д., и функции преобразования, такие как toupper и tolower, которые преобразуют заданный символ в верхний или нижний регистр соответственно.

В заголовке <cctype.h> есть два типа функций.

Функции классификации символов

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

Мы свели в таблицу функции классификации символов, включенные в заголовок <cctype.h> ниже:

Функция Назначение
1 isalnum Проверяет, является ли заданный символ буквенно-цифровым
2 isalpha Проверяет, является ли символ буквенным
3 isblank Проверяет, является ли символ пустым
4 iscntrl Проверяет, является ли данный символ управляющим
5 isdigit Проверяет, является ли данный символ десятичной цифрой
6 isgraph Проверяет, есть ли у данного символа графическое представление
7 islower Проверяет, является ли данный символ строчным
8 isprint Проверяет, является ли символ печатным
9 ispunct Проверяет, является ли символ знаком пунктуации
10 isspace Проверяет, является ли символ пробелом
11 isupper Проверяет, является ли данный символ заглавным
12 isxdigit Проверяет, является ли символ шестнадцатеричной цифрой

Функции преобразования символов

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

Функция Назначение функции
1 tolower Преобразует прописные буквы в строчные
2 toupper Преобразует строчные буквы в прописные

Давайте подробно рассмотрим каждую из функций (классификация и преобразование). Мы также представим простой пример программирования на C++ для каждой из функций.

Читать также:  Операторы new и delete в C++ с примерами

Isalnum

Прототип функции: int isalnum(int c);

Параметр(ы): c=> Символ, который следует проверять, является ли он буквенно-цифровым или нет.

Возвращаемое значение:

ненулевое значение => с является буквенно-цифровым
0 => не является буквенно-цифровым

Описание: Эта функция проверяет, является ли заданный символ буквенно-цифровым или нет. Буквенно-цифровой означает, что символ находится в диапазоне от A(a) до Z(z) или от 0 до 9.

В C++ эта функция зависит от локали, и ее определение находится в заголовке <locale>.

Пример:

Вывод данных:

H is alphanumeric
is alphanumeric
lis alphanumeric
l is a s alphanumeric
s alphanumeric
not alphanumeric
W is alphanumeric
o is alphanumeric
ris alphanumeric
lis alphanumeric
d is alphanumeric
is not alphanumeric

Isalpha

Прототип функции: int isalpha(int c);

Параметр(ы): c-> Символ, который нужно проверить, является ли он буквенным или нет.

Возвращаемое значение:

ненулевое => с является буквенным
0 => не по алфавиту

Описание: Эта функция проверяет, является ли данный символ буквенным, т.е. среди строчных и прописных букв. Как и isalnum, эта функция также зависит от используемой локали.

Пример:

Вывод данных:

an alphabet
tis an alphabet
h is an alphabet
is not an alphabet
is not an alphabet

Isblank

Прототип функции: int isblank(int c);

Параметр(ы): c=> Проверяемый символ.

Возвращаемое значение:

ненулевой => символ пустой
0 => символ не пустой

Описание: Эта функция проверяет, является ли данный символ пробелом или нет. Пустой символ — это символ пробела, который используется для разделения слов в строке текста.

В C++ версия функции isblank для конкретной локали существует в <locale>.

Пример:

Вывод данных:

is not a blank
a blank
is not a blank
is a blank
is not a blank
is not a blank

Обратите внимание на последнюю строку в выводе, которая говорит «не пустой». Это связано с тем, что последняя позиция массива символов не инициализируется значением, но все еще имеет позицию печати. Следовательно, она не пустая.

Iscntrl

Прототип функции: int iscntrl(int c);

Параметр(ы): c=> Проверяемый символ

Возвращаемое значение:

ненулевое значение => с является управляющим символом
0=> с не является управляющим символом

Описание: Функция проверяет, является ли данный параметр управляющим символом. Управляющий символ — это символ, который не отображается на дисплее или не занимает место для печати.

Пример:

Вывод данных:

is not a control character
a control character
is not a control character
is a control character
h is not a control character
is a control character

Isdigit

Прототип функции: int isdigit(int c)

Читать также:  Алгоритмы в STL

Параметр(ы): c=> Символ, приведенный к типу int, значение которого должно быть проверено.

Возвращаемое значение: ненулевое значение => c — десятичная цифра
0=> c не является цифрой

Описание: Эта функция проверяет, является ли данный параметр десятичной цифрой или нет. Символ является десятичной цифрой, если его значение находится в диапазоне от 0 до 9.

Пример:

Вывод данных:

is not a digit
is a digit
2 is a digit
b is not a digit
is not a digit

Isgraph

Прототип функции: int isgraph(int c)

Параметр(ы): c=> Символ, приведенный к типу int, который проверяется с помощью функции isgraph.

Возвращаемое значение:

ненулевое значение => c является графическим представлением
0=> c не является графическим представлением

Описание: Функция проверяет, является ли заданный символ c символом с графическим представлением. Символ, который можно напечатать, — это символ с графическим представлением.

Пример:

Вывод данных:

a is a graphical character
is a graphical character
l is a graphical character
2 is a graphical character
b is a graphical character
not a qraphical character

Islower

Прототип функции: int islower(int c)

Параметр(ы): c=> Символ, который нужно проверить с помощью функции islower.

Возвращаемое значение:

ненулевое значение => c в нижнем регистре
0=> c не в нижнем регистре

Описание: Функция islower проверяет, является ли заданный символ c строчной буквой или нет.

Символ нижнего регистра — это тот, который имеет одно из значений: a b c d e f g h i j k l m n o p q r s t u v w x y z.

Пример:

Вывод данных:

is not a lowercase character
is a lowercase character
h is a lowercase character
is not a lowercase character

Isprint

Прототип функции: int isprint(int c)

Параметр(ы): c=> Символ, который нужно проверить с помощью функции isprint.

Возвращаемое значение:

ненулевое значение => c можно напечатать
0 => c не печатается

Описание: Функция isprint проверяет, является ли данный символ печатаемым. Печатный символ — это тот, который занимает позицию печати на дисплее.

Пример:

Вывод данных:

is a printable character
t is a printable character
h is a printable character
not a printable character

Ispunct

Прототип функции: int ispunct(int c)

Параметр(ы): c=> Символ, который нужно проверить с помощью функции ispunct.

Возвращаемое значение:

ненулевое значение => c — знак пунктуации
0 => c не является знаком препинания

Описание: Эта функция проверяет, является ли данный символ знаком пунктуации. Символ, который является графическим (от isgraph), а не буквенно-цифровым (от isalnum), называется пунктуационным.

Пример:

Вывод данных:

s not a punctuation character
t is not a punctuation character
h is not a punctuation character
is a punctuation character
l is not a punctuation character
2 is not a punctuation character
3 is not a punctuation character
is not a punctuation character

Isspace

Прототип функции: int isspace(int c)

Читать также:  Сортировка слиянием в C++

Параметр(ы): c=> Символ, который нужно проверить с помощью функции isspace.

Возвращаемое значение:

ненулевое значение => c — это пробел
0=> c не является пробелом

Описание: Эта функция проверяет, является ли заданный символ пробелом. Для локали «C» пробельные символы могут быть любыми из следующих.

Пример:

Вывод данных:

is not a a white space
a white space
is not a white space
is a white space
is not a white space
is not a white space
is not a white space

Isupper

Прототип функции: int isupper(int c)

Параметр(ы): c=> Символ, который нужно проверить с помощью функции isupper.

Возвращаемое значение:

ненулевое значение => c в верхнем регистре
0=> c не в верхнем регистре

Описание: Функция islower проверяет, является ли данный символ c прописным или нет.

Символ верхнего регистра — это тот, который имеет одно из значений: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.

Пример:

Вывод данных:

is an uppercase character
Tis an uppercase character
h is not an uppercase character
is not an uppercase character

Isxdigit

Прототип функции: int isxdigit(int c)

Параметр(ы): c=> Символ, который нужно проверить с помощью функции isxdigit.

Возвращаемое значение:

ненулевое значение => c шестнадцатеричный
0=> c не является шестнадцатеричным

Описание: Эта функция проверяет, является ли данный символ шестнадцатеричной цифрой. Допустимые шестнадцатеричные: 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

Пример:

Вывод данных:

is not hexadecimal digit
b is hexadecimal digit
c is hexadecimal digit
l is hexadecimal digit
0 is hexadecimal digit
is not hexadecimal digit

Tolower

Прототип функции: int tolower(int c)

Параметр(ы): c=> Символ, который нужно преобразовать в нижний регистр.

Возвращаемое значение:

Возвращает нижний эквивалент c, в противном случае без изменений.
Возвращаемое значение — int и может быть неявно приведено к char.

Описание: Преобразует заданный символ c в его эквивалент в нижнем регистре. Если преобразование невозможно для данного символа, то возвращается неизменное значение (c).

Пример:

Вывод данных:

STH converted to lowercase:sth

Toupper

Прототип функции: int toupper(int c)

Параметр(ы): c=>символ, который нужно преобразовать в верхний регистр.

Возвращаемое значение:

Возвращает верхний эквивалент c, в противном случае без изменений.
Возвращаемое значение — int и может быть неявно приведено к char.

Описание: Преобразует заданный символ c в его эквивалент в верхнем регистре. Если преобразование для данного символа невозможно, то возвращается неизменное значение (c).

Пример:

Вывод данных:

tutorials converted to lowercase: TUTORIALS

Итог

На этом мы заканчиваем нашу статью по символьным функциям в C++.

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

С Уважением, МониторБанк

Добавить комментарий