Partager via


ctype, classe

Classe fournissant une facette utilisée pour la classification des caractères et la conversion entre majuscules et minuscules et entre le jeu de caractères natif et celui utilisé par les paramètres régionaux.

Syntaxe

template <class CharType>
class ctype : public ctype_base;

Paramètres

CharType
Type utilisé dans le cadre d'un programme pour encoder des caractères.

Notes

Comme avec n'importe quelle facette de paramètres régionaux, l'ID d'objet statique possède une valeur stockée initiale de zéro. La première tentative d’accès à sa valeur stockée entraîne le stockage d’une valeur positive unique dans id. Les critères de classification sont fournis par un type de masque de bits imbriqué dans la classe de base ctype_base.

La bibliothèque standard C++ définit deux spécialisations explicites de ce modèle de classe :

  • ctype<char>, spécialisation explicite dont les différences sont décrites séparément. Pour plus d’informations, consultez ctype<char> Classe.

  • ctype<wchar_t>, qui traite les éléments comme des caractères larges.

Autres spécialisations du modèle ctype<CharType>de classe :

  • Convertissez une valeur ch de type CharType en valeur de type char avec l’expression (char)ch.

  • Convertissez un octet de valeur de type char en valeur de type CharType avec l’expression CharType(byte).

Toutes les autres opérations sont effectuées sur char les valeurs de la même façon que pour la spécialisation ctype<char>explicite.

Constructeurs

Constructeur Description
ctype Constructeur des objets de classe ctype qui servent de facettes de paramètres régionaux pour les caractères.

Typedefs

Nom de type Description
char_type Type qui décrit un caractère utilisé par les paramètres régionaux.

Fonctions Membre

Fonction membre Description
do_is Fonction virtuelle appelée pour vérifier si un caractère unique possède un attribut particulier, ou pour classer les attributs de chaque caractère dans une plage et les stocker dans un tableau.
do_narrow Fonction virtuelle appelée pour convertir un caractère de type CharType utilisé par les paramètres régionaux en caractère correspondant de type char dans le jeu de caractères natif.
do_scan_is Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui correspond au masque spécifié.
do_scan_not Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui ne correspond pas au masque spécifié.
do_tolower Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en minuscules.
do_toupper Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en majuscules.
do_widen Fonction virtuelle appelée pour convertir un caractère de type char du jeu de caractères natif en caractère correspondant de type CharType utilisé par les paramètres régionaux.
is Vérifie si un caractère possède un attribut spécifique, ou classe les attributs de chaque caractère dans une plage et les stocke dans un tableau.
narrow Convertit un caractère de type CharType utilisé par les paramètres régionaux en caractère correspondant de type char dans le jeu de caractères natif.
scan_is Localise le premier caractère d'une plage qui correspond au masque spécifié.
scan_not Localise le premier caractère d'une plage qui ne correspond pas au masque spécifié.
tolower Convertit un caractère ou une plage de caractères en minuscules.
toupper Convertit un caractère ou une plage de caractères en majuscules.
widen Convertit un caractère de type char dans le jeu de caractères natif en caractère correspondant de type CharType utilisé par les paramètres régionaux.

Spécifications

Header :<locale>

Espace de noms : std

ctype ::char_type

Type qui décrit un caractère utilisé par les paramètres régionaux.

typedef CharType char_type;

Notes

Le type est un synonyme du paramètre de modèle CharType.

Exemple

Consultez la fonction membre widen pour obtenir un exemple d’utilisation de char_type comme valeur de retour.

ctype ::ctype

Constructeur des objets de classe ctype qui servent de facettes de paramètres régionaux pour les caractères.

explicit ctype(size_t _Refs = 0);

Paramètres

_Refs
Valeur entière qui sert à spécifier le type de gestion de la mémoire pour l’objet.

Notes

Les valeurs possibles pour le paramètre _Refs et leur signification sont les suivantes :

  • 0 : la durée de vie de l’objet est gérée par les paramètres régionaux qui le contiennent.

  • 1 : la durée de vie de l’objet doit être gérée manuellement.

  • > 1 : Ces valeurs ne sont pas définies.

Aucun exemple direct n’est possible, car le destructeur est protégé.

Le constructeur initialise son objet de base locale::facet avec locale::facet( _Refs).

ctype ::d o_is

Fonction virtuelle appelée pour vérifier si un caractère unique possède un attribut particulier, ou pour classer les attributs de chaque caractère dans une plage et les stocker dans un tableau.

virtual bool do_is(
    mask maskVal,
    CharType ch) const;

virtual const CharType *do_is(
    const CharType* first,
    const CharType* last,
    mask* dest) const;

Paramètres

maskVal
Valeur de masque pour laquelle le caractère doit être vérifié.

Ch
Caractère dont les attributs doivent être vérifiés.

first
Pointeur vers le premier caractère de la plage dont les attributs doivent être classés.

last
Pointeur vers le caractère juste après le dernier caractère de la plage dont les attributs doivent être classés.

dest
Pointeur vers le début du tableau dans lequel les valeurs de masque qui caractérisent les attributs de chaque caractère doivent être stockées.

Valeur de retour

La première fonction membre retourne une valeur booléenne, c’est-à-dire true si le caractère testé a l’attribut décrit par la valeur de masque ; false s’il ne parvient pas à avoir l’attribut.

La seconde fonction membre retourne un tableau contenant les valeurs de masque qui caractérisent les attributs de chaque caractère de la plage.

Notes

Les valeurs de masque qui classent les attributs des caractères sont fournies par la classe ctype_base de laquelle dérive ctype. La première fonction membre peut accepter des expressions pour son premier paramètre appelé masque de bits et formée à partir de la combinaison de valeurs de masque par les opérateurs au niveau du bit (|, , &^, ~).

Exemple

Consultez l’exemple relatif à is, qui appelle do_is.

ctype ::d o_narrow

Fonction virtuelle appelée pour convertir un caractère de type CharType utilisé par les paramètres régionaux en caractère correspondant de type char dans le jeu de caractères natif.

virtual char do_narrow(
    CharType ch,
    char default = '\0') const;

virtual const CharType* do_narrow(
    const CharType* first,
    const CharType* last,
    char default,
    char* dest) const;

Paramètres

Ch
Caractère de type Chartype utilisé par les paramètres régionaux à convertir.

default
La valeur par défaut doit être assignée par la fonction membre à des caractères de type CharType qui n’ont pas de caractère équivalent de type char.

first
Pointeur vers le premier caractère de la plage de caractères à convertir.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.

dest
Pointeur const vers le premier caractère de type char dans la plage de destination qui stocke la plage de caractères convertis.

Valeur de retour

La première fonction membre protégée retourne le caractère natif de type char qui correspond au caractère de paramètre de type CharType ou par défaut si aucun équivalent n’est défini.

La deuxième fonction membre protégée retourne un pointeur vers la plage de destination de caractères natifs convertis à partir de caractères de type CharType.

Notes

La deuxième fonction de modèle membre protégée stocke dans dest[ ] la valeur do_narrow( [ first I], defaultpour I l’intervalle [0, last - first). I

Exemple

Consultez l’exemple relatif à narrow, qui appelle do_narrow.

ctype ::d o_scan_is

Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui correspond au masque spécifié.

virtual const CharType *do_scan_is(
    mask maskVal,
    const CharType* first,
    const CharType* last) const;

Paramètres

maskVal
Valeur de masque qui doit correspondre à un caractère.

first
Pointeur vers le premier caractère de la plage à analyser.

last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.

Valeur de retour

Pointeur vers le premier caractère d’une plage qui correspond à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.

Notes

La fonction membre protégée retourne le plus petit pointeur ptr de la plage [ first, last) pour lequel do_is( maskVal, * ptr) a la valeur true.

Exemple

Consultez l’exemple relatif à scan_is, qui appelle do_scan_is.

ctype ::d o_scan_not

Fonction virtuelle appelée pour rechercher le premier caractère d'une plage qui ne correspond pas au masque spécifié.

virtual const CharType *do_scan_not(
    mask maskVal,
    const CharType* first,
    const CharType* last) const;

Paramètres

maskVal
Valeur de masque qui ne doit pas correspondre à un caractère.

first
Pointeur vers le premier caractère de la plage à analyser.

last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.

Valeur de retour

Pointeur vers le premier caractère d’une plage qui ne correspond pas à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.

Notes

La fonction membre protégée retourne le plus petit pointeur ptr de la plage [ first, last) pour lequel do_is( maskVal, * ptr) a la valeur false.

Exemple

Consultez l’exemple relatif à scan_not, qui appelle do_scan_not.

ctype ::d o_tolower

Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en minuscules.

virtual CharType do_tolower(CharType ch) const;

virtual const CharType *do_tolower(
    CharType* first,
    const CharType* last) const;

Paramètres

Ch
Caractère à convertir en minuscules.

first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.

Valeur de retour

La première fonction membre protégée retourne la forme minuscule du paramètre ch. Si aucune forme minuscule n’existe, elle retourne ch. La deuxième fonction membre protégée retourne la dernière.

Notes

La deuxième fonction de modèle membre protégée remplace chaque élément first [ ], Ipour I l’intervalle [0, lastfirst - ), par do_tolower( first [ I]).

Exemple

Consultez l’exemple relatif à tolower, qui appelle do_tolower.

ctype ::d o_toupper

Fonction virtuelle appelée pour convertir un caractère ou une plage de caractères en majuscules.

virtual CharType do_toupper(CharType ch) const;

virtual const CharType *do_toupper(
    CharType* first,
    const CharType* last) const;

Paramètres

Ch
Caractère à convertir en majuscules.

first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.

Valeur de retour

La première fonction membre protégée retourne la forme majuscule du paramètre ch. Si aucune forme majuscule n’existe, elle retourne ch. La deuxième fonction membre protégée retourne la dernière.

Notes

La deuxième fonction de modèle membre protégée remplace chaque élément first [ ], Ipour I l’intervalle [0, lastfirst - ), par do_toupper( first [ I]).

Exemple

Consultez l’exemple relatif à toupper, qui appelle do_toupper.

ctype ::d o_widen

Fonction virtuelle appelée pour convertir un caractère de type char du jeu de caractères natif en caractère correspondant de type CharType utilisé par les paramètres régionaux.

virtual CharType do_widen(char byte) const;

virtual const char *do_widen(
    const char* first,
    const char* last,
    CharType* dest) const;

Paramètres

byte
Caractère de type char du jeu de caractères natifs à convertir.

first
Pointeur vers le premier caractère de la plage de caractères à convertir.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.

dest
Pointeur vers le premier caractère de type CharType dans la plage de destination qui stocke la plage de caractères convertis.

Valeur de retour

La première fonction membre protégée retourne le caractère de type CharType qui correspond au caractère de paramètre de type natif char.

La deuxième fonction membre protégée retourne un pointeur vers la plage de destination de caractères de type CharType utilisés par des paramètres régionaux, convertis à partir de caractères natifs de type char.

Notes

La deuxième fonction membre de modèle protégée stocke dans dest[ I] la valeur do_widen( first[ I]) pour I dans l’intervalle [0, last - first).

Exemple

Consultez l’exemple relatif à widen, qui appelle do_widen.

ctype ::is

Vérifie si un seul caractère a un attribut spécifique, ou classe les attributs de chaque caractère dans une plage et les stocke dans un tableau.

bool is(mask maskVal, CharType ch) const;

const CharType *is(
    const CharType* first,
    const CharType* last,
    mask* dest) const;

Paramètres

maskVal
Valeur de masque pour laquelle le caractère doit être vérifié.

Ch
Caractère dont les attributs doivent être vérifiés.

first
Pointeur vers le premier caractère de la plage dont les attributs doivent être classés.

last
Pointeur vers le caractère juste après le dernier caractère de la plage dont les attributs doivent être classés.

dest
Pointeur vers le début du tableau dans lequel les valeurs de masque qui caractérisent les attributs de chaque caractère doivent être stockées.

Valeur de retour

La première fonction membre retourne true si le caractère vérifié a l’attribut décrit par la valeur de masque ; false s’il n’a pas l’attribut.

La deuxième fonction membre retourne un pointeur vers le dernier caractère de la plage dont les attributs doivent être classés.

Notes

Les valeurs de masque qui classent les attributs des caractères sont fournies par la classe ctype_base de laquelle dérive ctype. La première fonction membre peut accepter des expressions pour son premier paramètre appelé masque de bits et formée à partir de la combinaison de valeurs de masque par les opérateurs au niveau du bit (|, , &^, ~).

Exemple

// ctype_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;

int main() {
   locale loc1 ( "German_Germany" ), loc2 ( "English_Australia" );

   if (use_facet<ctype<char> > ( loc1 ).is( ctype_base::alpha, 'a' ))
      cout << "The character 'a' in locale loc1 is alphabetic."
           << endl;
   else
      cout << "The character 'a' in locale loc1 is not alphabetic."
           << endl;

   if (use_facet<ctype<char> > ( loc2 ).is( ctype_base::alpha, '!' ))
      cout << "The character '!' in locale loc2 is alphabetic."
           << endl;
   else
      cout << "The character '!' in locale loc2 is not alphabetic."
           << endl;

   char *string = "Hello, my name is John!";
   ctype<char>::mask maskarray[30];
   use_facet<ctype<char> > ( loc2 ).is(
      string, string + strlen(string), maskarray );
   for (unsigned int i = 0; i < strlen(string); i++) {
      cout << string[i] << ": "
           << (maskarray[i] & ctype_base::alpha  "alpha"
                                                : "not alpha")
           << endl;;
   };
}

ctype ::narrow

Convertit des caractères de type CharType utilisés par des paramètres régionaux en caractères correspondants de type char dans le jeu de caractères natifs.

char narrow(CharType ch, char default = '\0') const;

const CharType* narrow(
    const CharType* first,
    const CharType* last,
    char default,
    char* dest) const;

Paramètres

Ch
Caractère de type Chartype utilisé par les paramètres régionaux à convertir.

default
La valeur par défaut doit être assignée par la fonction membre à des caractères de type CharType qui n’ont pas de caractère équivalent de type char.

first
Pointeur vers le premier caractère de la plage de caractères à convertir.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.

dest
Pointeur const vers le premier caractère de type char dans la plage de destination qui stocke la plage de caractères convertis.

Valeur de retour

La première fonction membre retourne le caractère natif de type char qui correspond au caractère de paramètre de type CharType default si aucun équivalent n’est défini.

La deuxième fonction membre retourne un pointeur vers la plage de destination de caractères natifs convertis à partir de caractères de type CharType.

Notes

La première fonction membre retourne do_narrow(ch, default). La deuxième fonction membre retourne do_narrow (first, last, default, dest). Seuls les caractères sources de base ont la garantie d’avoir une image unique inverse CharType sous narrow. Pour ces caractères sources de base, l’invariant suivant contient : narrow ( élargir ( c ), 0) == c.

Exemple

// ctype_narrow.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;

int main( )
{
   locale loc1 ( "english" );
   wchar_t *str1 = L"\x0392fhello everyone";
   char str2 [16];
   bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).narrow
      ( str1, str1 + wcslen(str1), 'X', &str2[0] ) != 0);  // C4996
   str2[wcslen(str1)] = '\0';
   wcout << str1 << endl;
   cout << &str2[0] << endl;
}
Xhello everyone

ctype ::scan_is

Localise le premier caractère d'une plage qui correspond au masque spécifié.

const CharType *scan_is(
    mask maskVal,
    const CharType* first,
    const CharType* last) const;

Paramètres

maskVal
Valeur de masque qui doit correspondre à un caractère.

first
Pointeur vers le premier caractère de la plage à analyser.

last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.

Valeur de retour

Pointeur vers le premier caractère d’une plage qui correspond à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.

Notes

La fonction membre retourne do_scan_is(maskVal, first, last).

Exemple

// ctype_scan_is.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;

int main( )
{
   locale loc1 ( "German_Germany" );

   char *string = "Hello, my name is John!";

   const char* i = use_facet<ctype<char> > ( loc1 ).scan_is
      ( ctype_base::punct, string, string + strlen(string) );
   cout << "The first punctuation is \"" << *i << "\" at position: "
      << i - string << endl;
}
The first punctuation is "," at position: 5

ctype ::scan_not

Localise le premier caractère d'une plage qui ne correspond pas au masque spécifié.

const CharType *scan_not(
    mask maskVal,
    const CharType* first,
    const CharType* last) const;

Paramètres

maskVal
Valeur de masque qui ne doit pas correspondre à un caractère.

first
Pointeur vers le premier caractère de la plage à analyser.

last
Pointeur vers le caractère juste après le dernier caractère de la plage à analyser.

Valeur de retour

Pointeur vers le premier caractère d’une plage qui ne correspond pas à un masque spécifié. Si aucune valeur de ce type n’existe, la fonction retourne la dernière.

Notes

La fonction membre retourne do_scan_not(maskVal, first, last).

Exemple

// ctype_scan_not.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;

int main( )
{
   locale loc1 ( "German_Germany" );

   char *string = "Hello, my name is John!";

   const char* i = use_facet<ctype<char> > ( loc1 ).scan_not
      ( ctype_base::alpha, string, string + strlen(string) );
   cout << "First nonalpha character is \"" << *i << "\" at position: "
      << i - string << endl;
}
First nonalpha character is "," at position: 5

ctype ::tolower

Convertit un caractère ou une plage de caractères en minuscules.

CharType tolower(CharType ch) const;

const CharType *tolower(CharType* first, const CharType* last) const;

Paramètres

Ch
Caractère à convertir en minuscules.

first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.

Valeur de retour

La première fonction membre retourne la forme minuscule du paramètre ch. Si aucune forme minuscule n’existe, elle retourne ch.

La deuxième fonction membre retourne la dernière.

Notes

La première fonction membre retourne do_tolower(ch). La deuxième fonction membre retourne do_tolower(first, last).

Exemple

// ctype_tolower.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;

int main( )
{
   locale loc1 ( "German_Germany" );

   char string[] = "HELLO, MY NAME IS JOHN";

   use_facet<ctype<char> > ( loc1 ).tolower
      ( string, string + strlen(string) );
   cout << "The lowercase string is: " << string << endl;
}
The lowercase string is: hello, my name is john

ctype ::toupper

Convertit un caractère ou une plage de caractères en majuscules.

CharType toupper(CharType ch) const;
const CharType *toupper(CharType* first, const CharType* last) const;

Paramètres

Ch
Caractère à convertir en majuscule.

first
Pointeur vers le premier caractère de la plage de caractères dont la casse doit être convertie.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères dont la casse doit être convertie.

Valeur de retour

La première fonction membre retourne la forme majuscule du paramètre ch. Si aucune forme majuscule n’existe, elle retourne ch.

La deuxième fonction membre retourne la dernière.

Notes

La première fonction membre retourne do_toupper(ch). La deuxième fonction membre retourne do_toupper( first, last).

Exemple

// ctype_toupper.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;

int main( )
{
   locale loc1 ( "German_Germany" );

   char string[] = "Hello, my name is John";

   use_facet<ctype<char> > ( loc1 ).toupper
      ( string, string + strlen(string) );
   cout << "The uppercase string is: " << string << endl;
}
The uppercase string is: HELLO, MY NAME IS JOHN

ctype ::widen

Convertit un caractère de type char dans le jeu de caractères natif en caractère correspondant de type CharType utilisé par les paramètres régionaux.

CharType widen(char byte) const;
const char *widen(const char* first, const char* last, CharType* dest) const;

Paramètres

byte
Caractère de type char du jeu de caractères natifs à convertir.

first
Pointeur vers le premier caractère de la plage de caractères à convertir.

last
Pointeur vers le caractère juste après le dernier caractère de la plage de caractères à convertir.

dest
Pointeur vers le premier caractère de type CharType dans la plage de destination qui stocke la plage de caractères convertis.

Valeur de retour

La première fonction membre retourne le caractère de type CharType qui correspond au caractère de paramètre de type natif char.

La deuxième fonction membre retourne un pointeur vers la plage de destination de caractères de type CharType utilisés par des paramètres régionaux, convertis à partir de caractères natifs de type char.

Notes

La première fonction membre retourne do_widen(byte). La deuxième fonction membre retourne do_widen(first, last, dest).

Exemple

// ctype_widen.cpp
// compile with: /EHsc /W3
#include <locale>
#include <iostream>
using namespace std;

int main( )
{
   locale loc1 ( "English" );
   char *str1 = "Hello everyone!";
   wchar_t str2 [16];
   bool result1 = (use_facet<ctype<wchar_t> > ( loc1 ).widen
      ( str1, str1 + strlen(str1), &str2[0] ) != 0);  // C4996
   str2[strlen(str1)] = '\0';
   cout << str1 << endl;
   wcout << &str2[0] << endl;

   ctype<wchar_t>::char_type charT;
   charT = use_facet<ctype<char> > ( loc1 ).widen( 'a' );
}
Hello everyone!
Hello everyone!

Voir aussi

<locale>
Sécurité des threads dans la bibliothèque C++ Standard