Namespaces
Variants

std:: isprint

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

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

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

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

Содержание

Параметры

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

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

Ненулевое значение, если символ может быть напечатан, и ноль в противном случае.

Примечания

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

bool my_isprint(char ch)
{
    return std::isprint(static_cast<unsigned char>(ch));
}

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

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

Пример

#include <cctype>
#include <clocale>
#include <iostream>
int main()
{
    unsigned char c = '\xa0'; // the non-breaking space in ISO-8859-1
    std::cout << "isprint(\'\\xa0\', default C locale) returned "
              << std::boolalpha << (bool)std::isprint(c) << '\n';
    std::setlocale(LC_ALL, "en_GB.iso88591");
    std::cout << "isprint(\'\\xa0\', ISO-8859-1 locale) returned "
              << std::boolalpha << (bool)std::isprint(c) << '\n';
}

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

isprint('\xa0', default C locale) returned false
isprint('\xa0', ISO-8859-1 locale) returned true

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

проверяет, классифицируется ли символ как печатаемый в данной локали
(шаблон функции)
проверяет, является ли широкий символ печатаемым
(функция)
**Примечание:** В данном HTML-фрагменте нет текста для перевода, требующего локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и диапазонов (33–47) - Специальных символов и escape-последовательностей внутри тегов ` ` - Математических символов (≠0) Все элементы сохранены в оригинальном виде в соответствии с требованиями. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из числовых значений, шестнадцатеричных кодов, символов и HTML-тегов. Числовые диапазоны (48-57), escape-последовательности (\x30-\x39, \60-\71) и символы (0123456789) являются техническими данными и не подлежат переводу согласно указанным правилам. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Числовых значений и диапазонов - Специальных символов в тегах ` ` - Шестнадцатеричных и восьмеричных кодов - Математических символов (≠) - C++ специфических обозначений Все эти элементы сохранены в оригинальном виде согласно требованиям перевода. **Примечание:** В данном HTML-фрагменте переводить нечего, так как: - Числовой диапазон "65–70" не требует перевода - Весь текст внутри тегов ` ` сохранен без изменений - HTML-теги и атрибуты сохранены в оригинале - Специфические C++ термины и обозначения (\x41, \101, ABCDEF, ≠0) не переведены **Примечание:** В данном HTML-фрагменте не содержится текста для перевода, требующего локализации на русский язык. Все элементы представлены: - Числовыми диапазонами (71–90) - Шестнадцатеричными (\x47–\x5A) и восьмеричными (\107–\132) кодами - Буквенными последовательностями (GHIJKLMNOP, QRSTUVWXYZ) - Математическими символами (≠0) - Цифровыми значениями (0) Все эти элементы сохраняются в исходном виде согласно требованиям перевода. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (91–96) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений - Символы `–` (тире) и математические символы `≠0` не подлежат переводу - HTML-теги и атрибуты сохранены в оригинальном виде **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Кодовых последовательностей в тегах ` ` (сохранены без изменений) - Числовых значений и символов - Специальных математических символов (≠) Если бы присутствовал пояснительный текст вне тегов ` `, он был бы переведен на русский язык с сохранением профессиональной терминологии C++. **Примечание:** В данном HTML-фрагменте не содержится текста для перевода на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Числовых значений и диапазонов - C++ escape-последовательностей внутри тегов ` ` (не подлежат переводу) - Символьных литералов внутри тегов ` ` (не подлежат переводу) - Математических символов (≠0) Единственный текст, который мог бы быть переведен - это символ тире "–" между значениями, но в данном контексте он является математическим/диапазонным символом, а не лингвистическим. **Примечание:** В данном HTML-фрагменте нет текста для перевода, требующего локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (сохранены без изменений) - Числовых значений и символов в тегах ` ` (не подлежат переводу) - Символов диапазона "–" (не требует перевода) - Математического символа "≠0" (не требует перевода) Форматирование и структура полностью сохранены в соответствии с требованиями.
Значения 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