Namespaces
Variants

std:: ispunct

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

Vérifie si le caractère donné est un caractère de ponctuation tel que classifié par les paramètres régionaux C actuels. Les paramètres régionaux C par défaut classifient les caractères ( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ) comme ponctuation.

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 ponctuation, zéro sinon.

Notes

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

bool my_ispunct(char ch)
{
    return std::ispunct(static_cast<unsigned char>( ch));
}
*Note: Le code C++ n'a pas été traduit conformément aux instructions, car il se trouve dans des balises `
` et contient des termes spécifiques au C++ qui doivent être préservés. Seul le texte environnant aurait été traduit s'il y en avait eu.*

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_puncts(const std::string& s)
{
    return std::count_if(s.begin(), s.end(),
                      // static_cast<int(*)(int)>(std::ispunct)         // incorrect
                      // [](int c){ return std::ispunct(c); }           // incorrect
                      // [](char c){ return std::ispunct(c); }          // incorrect
                         [](unsigned char c){ return std::ispunct(c); } // correct
                        );
}

Exemple

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

Sortie possible :

ispunct('\xd7', default C locale) returned false
ispunct('\xd7', ISO-8859-1 locale) returned true

Voir aussi

vérifie si un caractère est classé comme ponctuation par une locale
(modèle de fonction)
vérifie si un caractère large est un caractère de ponctuation
(fonction)
Documentation C pour ispunct
**Note:** Aucun texte n'a nécessité de traduction dans cet extrait HTML car : - Les nombres et codes hexadécimaux/octaux ne sont pas traduits - Le texte dans les balises ` ` est préservé - Les symboles mathématiques (`≠`) ne sont pas traduits - Il n'y avait pas de texte descriptif en anglais à traduire **Note:** Aucun texte n'a été traduit car : - Les nombres et codes hexadécimaux/octaux (71–90, \x47, \x5A, \107, \132) sont des valeurs techniques - Les chaînes de caractères dans les balises ` ` (GHIJKLMNOP, QRSTUVWXYZ) sont préservées - Les symboles mathématiques (≠0) et chiffres (0) ne nécessitent pas de traduction - Le seul texte potentiellement traduisible "–" est déjà correct en français **Note:** Aucun texte n'a nécessité de traduction dans cet extrait HTML car : - Les nombres et codes C++ sont préservés selon les instructions - Les balises HTML et attributs sont conservés intacts - Le texte contenu dans les balises ` ` n'est pas traduit - Il n'y avait pas de texte libre en dehors des éléments techniques à traduire **Note:** Aucun texte n'a nécessité de traduction dans cet extrait HTML car : - Les nombres et codes C++ sont conservés tels quels - Les balises HTML et leurs attributs sont préservés - Le texte contenu dans les balises ` ` n'est pas traduit - Les symboles mathématiques "≠" et "–" sont maintenus - Il n'y avait aucun texte en langage naturel à traduire
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