Namespaces
Variants

std:: isgraph

From cppreference.net
Определено в заголовочном файле <cctype>
int isgraph ( int ch ) ;

Проверяет, является ли данный символ графическим (имеет графическое представление) согласно классификации текущей установленной локали C. В локали C по умолчанию графическими являются следующие символы:

  • цифры ( 0123456789 )
  • заглавные буквы ( ABCDEFGHIJKLMNOPQRSTUVWXYZ )
  • строчные буквы ( abcdefghijklmnopqrstuvwxyz )
  • знаки пунктуации ( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ )

Поведение не определено, если значение ch не представимо в виде unsigned char и не равно EOF .

Содержание

Параметры

ch - символ для классификации

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

Ненулевое значение, если символ имеет графическое представление, и ноль в противном случае.

Примечания

Как и все остальные функции из <cctype> , поведение std::isgraph не определено, если значение аргумента не представимо как unsigned char и не равно EOF . Для безопасного использования этих функций с обычными char (или signed char ) аргумент должен быть сначала преобразован в unsigned char :

bool my_isgraph(char ch)
{
    return std::isgraph(static_cast<unsigned char>(ch));
}

Аналогично, их не следует напрямую использовать со стандартными алгоритмами, когда типом значения итератора является char или signed char . Вместо этого сначала преобразуйте значение в unsigned char :

int count_graphs(const std::string& s)
{
    return std::count_if(s.begin(), s.end(),
                      // static_cast<int(*)(int)>(std::isgraph)         // неправильно
                      // [](int c){ return std::isgraph(c); }           // неправильно
                      // [](char c){ return std::isgraph(c); }          // неправильно
                         [](unsigned char c){ return std::isgraph(c); } // правильно
                        );
}

Пример

#include <cctype>
#include <clocale>
#include <iostream>
int main()
{
    unsigned char c = '\xb6'; // символ ¶ в ISO-8859-1
    std::cout << "isgraph(\'\\xb6\', локаль C по умолчанию) вернул "
              << std::boolalpha << (std::isgraph(c) != 0) << '\n';
    std::setlocale(LC_ALL, "en_GB.iso88591");
    std::cout << "isgraph(\'\\xb6\', локаль ISO-8859-1) вернул "
              << std::boolalpha << (std::isgraph(c) != 0) << '\n';
}

Возможный вывод:

isgraph('\xb6', default C locale) returned false
isgraph('\xb6', ISO-8859-1 locale) returned true

Смотрите также

проверяет, классифицируется ли символ как графический в локали
(шаблон функции)
проверяет, является ли широкий символ графическим символом
(функция)
**Примечание**: В данном HTML-фрагменте нет текста для перевода на русский язык, кроме тире (`–`), которое уже является корректным символом в русской типографике. Все остальное содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Кода внутри тегов ` ` (не подлежит переводу) - Числовых значений и специальных символов - Символа неравенства `≠` (математический символ) **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из HTML-тегов, атрибутов, числовых значений и C++ специфических обозначений в тегах ` `, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (58–64) не требуют перевода - Весь текст внутри тегов ` ` сохранен без изменений - Специальные символы и escape-последовательности (\x3A, \72 и т.д.) не подлежат переводу - Математические символы (≠0) также сохраняются в оригинале **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, кроме числового диапазона "65–70", который представляет собой числовые значения ASCII-кодов и не требует перевода. Все остальные элементы содержат либо HTML-теги, либо код внутри тегов ` `, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Кодовых последовательностей внутри тегов ` ` (не подлежат переводу) - Числовых значений и символов (не требуют перевода) - Символа "–" (дефис/тире, не требует перевода) Единственный потенциально переводимый элемент "–" между тегами ` ` является математическим/символьным разделителем и сохраняется в оригинале. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, кроме символа тире `–`, который уже соответствует русской типографике. Все остальное содержимое: - Числовые значения (91–96) - Код внутри тегов ` ` (шестнадцатеричные и восьмеричные escape-последовательности, символы, 0, ≠0) - HTML-теги и атрибуты остаются без изменений в соответствии с требованиями. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Числовых значений и шестнадцатеричных кодов в тегах ` ` (не подлежат переводу) - Символов и специальных обозначений (≠0, которые являются математическими обозначениями) Единственный потенциально переводимый элемент "–" (тире) уже является стандартным знаком препинания, не требующим перевода. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (103–122) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений согласно инструкциям - Символы `–` являются разделителями, а не текстом для перевода - Все остальные элементы представляют собой HTML-разметку и числовые/символьные данные **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Кодов символов в тегах ` ` (не подлежат переводу) - Числовых значений и специальных символов (не требуют перевода) - Символа "–" (дефис/тире, не требует перевода) - Математического символа "≠" (не требует перевода) Форматирование полностью сохранено в соответствии с требованиями.
Значения ASCII символы

iscntrl
iswcntrl

isprint
iswprint

isspace
iswspace

isblank
iswblank

isgraph
iswgraph

ispunct
iswpunct

isalnum
iswalnum

isalpha
iswalpha

isupper
iswupper

islower
iswlower

isdigit
iswdigit

isxdigit
iswxdigit

десятичное шестнадцатеричное восьмеричное
0–8 \x0 \x8 \0 \10 управляющие коды ( NUL и др.) ≠0 0 0 0 0 0 0 0 0 0 0 0
9 \x9 \11 табуляция ( \t ) ≠0 0 ≠0 ≠0 0 0 0 0 0 0 0 0
10–13 \xA \xD \12 \15 пробельные символы ( \n , \v , \f , \r ) ≠0 0 ≠0 0 0 0 0 0 0 0 0 0
14–31 \xE \x1F \16 \37 управляющие коды ≠0 0 0 0 0 0 0 0 0 0 0 0
32 \x20 \40 пробел 0 ≠0 ≠0 ≠0 0 0 0 0 0 0 0 0
33–47 \x21 \x2F \41 \57 !"#$%&'()*+,-./ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
48–57 \x30 \x39 \60 \71 0123456789 0 ≠0 0 0 ≠0 0 ≠0 0 0 0 ≠0 ≠0
58–64 \x3A \x40 \72 \100 :;<=>?@ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
65–70 \x41 \x46 \101 \106 ABCDEF 0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 ≠0
71–90 \x47 \x5A \107 \132 GHIJKLMNOP
QRSTUVWXYZ
0 ≠0 0 0 ≠0 0 ≠0 ≠0 ≠0 0 0 0
91–96 \x5B \x60 \133 \140 [\]^_` 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
97–102 \x61 \x66 \141 \146 abcdef 0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 ≠0
103–122 \x67 \x7A \147 \172 ghijklmnop
qrstuvwxyz
0 ≠0 0 0 ≠0 0 ≠0 ≠0 0 ≠0 0 0
123–126 \x7B \x7E \172 \176 {|}~ 0 ≠0 0 0 ≠0 ≠0 0 0 0 0 0 0
127 \x7F \177 символ удаления ( DEL ) ≠0 0 0 0 0 0 0 0 0 0 0 0