isGraph()
isGraph() проверяет, является ли символ char видимым печатаемым знаком — в отличие от isPrint(), возвращает false для пробела.
Полная статья
Описание
isGraph() проверяет, является ли символ видимым печатаемым знаком. Ключевое отличие от isPrint(): пробел считается печатаемым символом, но не имеет видимого содержимого, поэтому isGraph() вернёт для него false. Все остальные печатаемые символы — буквы, цифры, знаки препинания — пройдут проверку успешно.
Функция возвращает true, если переданный символ можно напечатать и он визуально занимает место на экране.
Синтаксис
Используйте следующую функцию для оценки переменной char:
isGraph(thisChar)
Параметры
thisChar: символ, который нужно проверить. Допустимый тип данных: char.
Возвращает
Функция возвращает true, если символ является видимым печатаемым знаком (не пробелом и не управляющим символом). В противном случае возвращает false.
Пример кода
char myChar = ' '; // попробуем с 'A' — печатаемый символ
void setup() {
Serial.begin(9600);
if (isGraph(myChar)) { // проверяем, является ли myChar печатаемым символом, но не пробелом.
Serial.println("The character is printable");
}
else {
Serial.println("The character is not printable");
}
}
void loop() {
}
Где применяется
- Фильтрация ввода с клавиатуры или Serial: если нужно обрабатывать только видимые символы и игнорировать пробелы, переводы строк и управляющие коды.
- Валидация строк: проверка, что строка содержит хотя бы один значимый символ, а не состоит только из пробелов.
- Парсинг текстовых протоколов: выделение токенов из потока данных, пришедших через UART или другой интерфейс.
Практические замечания
isGraph()возвращаетfalseдля пробела (' '), хотяisPrint()вернул быtrue. Это принципиальное различие между двумя функциями.- Управляющие символы (например,
'\n','\r','\t') также даютfalse. - Функция работает с кодами ASCII от 33 до 126 включительно — именно этот диапазон считается «графическим».
- Если вы получаете символы через
Serial.read(), сначала проверьте, что результат не равен-1, и только потом приводите его кcharперед передачей вisGraph(). - При работе с кириллицей или другими символами вне диапазона ASCII результат непредсказуем — функция рассчитана только на стандартную таблицу ASCII.