Namespaces
Variants

std:: iscntrl

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

Проверяет, является ли данный символ управляющим символом, как классифицировано в текущей установленной локали C. В локали по умолчанию "C" , управляющими символами являются символы с кодами 0x00-0x1F и 0x7F .

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

Содержание

Параметры

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

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

Ненулевое значение, если символ является управляющим символом, и ноль в противном случае.

Примечания

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

bool my_iscntrl(char ch)
{
    return std::iscntrl(static_cast<unsigned char>(ch));
}

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

int count_cntrls(const std::string& s)
{
    return std::count_if(s.begin(), s.end(),
                      // static_cast<int(*)(int)>(std::iscntrl)         // неверно
                      // [](int c){ return std::iscntrl(c); }           // неверно
                      // [](char c){ return std::iscntrl(c); }          // неверно
                         [](unsigned char c){ return std::iscntrl(c); } // верно
                        );
}

Пример

#include <cctype>
#include <clocale>
#include <iostream>
int main()
{
    unsigned char c = '\x94'; // the control code CCH in ISO-8859-1
    std::cout << "iscntrl(\'\\x94\', default C locale) returned "
              << std::boolalpha << !!std::iscntrl(c) << '\n';
    std::setlocale(LC_ALL, "en_GB.iso88591");
    std::cout << "iscntrl(\'\\x94\', ISO-8859-1 locale) returned "
              << !!std::iscntrl(c) << '\n';
}

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

iscntrl('\x94', default C locale) returned false
iscntrl('\x94', ISO-8859-1 locale) returned true

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

проверяет, классифицируется ли символ как управляющий символ в локали
(шаблон функции)
проверяет, является ли широкий символ управляющим символом
(функция)
**Примечание:** В данном HTML-фрагменте весь текст, подлежащий переводу, уже находится внутри тегов ` `, поэтому перевода не требуется. Единственный элемент вне тегов ` ` - это дефис `–`, который является стандартным символом и не требует перевода. **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода - все содержимое состоит из HTML-тегов, атрибутов, числовых значений и C++ специфических обозначений внутри тегов ` `, которые согласно инструкциям не подлежат переводу. **Примечание:** В данном фрагменте HTML не содержится текста для перевода, требующего локализации на русский язык. Все элементы представлены: - Числовыми диапазонами (58–64) - Шестнадцатеричными (\x3A, \x40) и восьмеричными (\72, \100) escape-последовательностями - Символами ASCII (:;<=>?@) - Числовыми значениями (0) и математическими обозначениями (≠0) Все эти элементы сохраняются в оригинальном виде согласно требованиям технического перевода для C++. **Примечание:** В данном HTML-фрагменте не содержится текста для перевода, требующего локализации на русский язык. Все элементы представляют собой: - Числовые диапазоны (65–70) - C++ escape-последовательности (\x41, \x46, \101, \106) - Шестнадцатеричные символы (ABCDEF) - Логические значения (0, ≠0) Согласно вашим требованиям, эти элементы не подлежат переводу. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (71–90) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений - Символы "–" являются разделителями диапазонов - Специальные обозначения "≠0" являются математическими символами Все требования по сохранению HTML-разметки и содержимого тегов ` ` выполнены. **Примечание:** В данном HTML-фрагменте нет текста для перевода на русский язык, так как: - Числовые значения (91–96) не требуют перевода - Содержимое внутри тегов ` ` сохраняется без изменений согласно инструкциям - Символы `–` (тире) и `≠` (знак неравенства) являются математическими символами - HTML-теги и атрибуты сохранены в оригинальном виде **Примечание:** В данном HTML-фрагменте отсутствует текст для перевода, требующий локализации на русский язык. Все содержимое состоит из: - HTML-тегов и атрибутов (не подлежат переводу) - Кодовых последовательностей в тегах ` ` (сохранены без изменений) - Числовых значений и символов - Специальных математических символов (≠) Если бы присутствовал пояснительный текст вне тегов кода, он был бы переведен на русский язык с сохранением профессионального стиля. **Примечание:** В данном HTML-фрагменте не содержится текста для перевода на русский язык. Все элементы представлены: - Числовыми значениями (103–122) - C++ escape-последовательностями (\x67, \x7A, \147, \172) - Буквенными символами внутри тегов - Математическими символами (≠0) - 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