Namespaces
Variants

std:: iscntrl

From cppreference.net
Défini dans l'en-tête <cctype>
int iscntrl ( int ch ) ;

Vérifie si le caractère donné est un caractère de contrôle tel que classifié par les paramètres régionaux C actuellement installés. Dans les paramètres régionaux par défaut, "C" , les caractères de contrôle sont les caractères avec les codes 0x00-0x1F et 0x7F .

Le comportement est indéfini si la valeur de ch n'est pas représentable comme unsigned char et n'est pas égale à EOF .

Table des matières

Paramètres

ch - caractère à classifier

Valeur de retour

Valeur non nulle si le caractère est un caractère de contrôle, zéro sinon.

Notes

Comme toutes les autres fonctions de <cctype> , le comportement de std::iscntrl est indéfini si la valeur de l'argument n'est ni représentable comme unsigned char ni égale à EOF . Pour utiliser ces fonctions de manière sûre avec des char simples (ou des signed char ), l'argument doit d'abord être converti en unsigned char :

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

De même, ils ne doivent pas être utilisés directement avec des algorithmes standard lorsque le type de valeur de l'itérateur est char ou signed char . À la place, convertissez d'abord la valeur en unsigned char :

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

Exemple

#include <cctype>
#include <clocale>
#include <iostream>
int main()
{
    unsigned char c = '\x94'; // le code de contrôle CCH en ISO-8859-1
    std::cout << "iscntrl(\'\\x94\', locale C par défaut) a retourné "
              << std::boolalpha << !!std::iscntrl(c) << '\n';
    std::setlocale(LC_ALL, "en_GB.iso88591");
    std::cout << "iscntrl(\'\\x94\', locale ISO-8859-1) a retourné "
              << !!std::iscntrl(c) << '\n';
}

Sortie possible :

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

Voir aussi

vérifie si un caractère est classé comme caractère de contrôle par une locale
(modèle de fonction)
vérifie si un caractère large est un caractère de contrôle
(fonction)
Documentation C pour iscntrl
**Note:** Aucune traduction n'a été effectuée car : - Le texte "71–90" représente une plage numérique qui ne nécessite pas de traduction - Tous les autres contenus textuels se trouvent à l'intérieur de balises ` ` qui doivent être préservées selon les instructions - Les symboles mathématiques "≠0" et les chiffres "0" sont des notations techniques qui ne se traduisent pas **Note:** Le contenu HTML fourni ne contient aucun texte traduisible en dehors des balises ` `. Les seuls éléments textuels sont : - Les nombres (123–126) qui ne nécessitent pas de traduction - Les caractères de ponctuation (–) qui sont universels - Le contenu des balises ` ` qui doit être préservé selon les instructions Aucune traduction n'a donc été nécessaire pour ce fragment HTML.
Valeurs ASCII Caractères

iscntrl
iswcntrl

isprint
iswprint

isspace
iswspace

isblank
iswblank

isgraph
iswgraph

ispunct
iswpunct

isalnum
iswalnum

isalpha
iswalpha

isupper
iswupper

islower
iswlower

isdigit
iswdigit

isxdigit
iswxdigit

décimal hexadécimal octal
0–8 \x0 \x8 \0 \10 codes de contrôle ( NUL , etc.) ≠0 0 0 0 0 0 0 0 0 0 0 0
9 \x9 \11 tabulation ( \t ) ≠0 0 ≠0 ≠0 0 0 0 0 0 0 0 0
10–13 \xA \xD \12 \15 espaces blancs ( \n , \v , \f , \r ) ≠0 0 ≠0 0 0 0 0 0 0 0 0 0
14–31 \xE \x1F \16 \37 codes de contrôle ≠0 0 0 0 0 0 0 0 0 0 0 0
32 \x20 \40 espace 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 caractère d'effacement ( DEL ) ≠0 0 0 0 0 0 0 0 0 0 0 0