Condividi tramite


Classe ctype

Classe che fornisce un facet utilizzato per classificare i caratteri, eseguire la conversione dalle lettere maiuscole e minuscole, nonché per eseguire la conversione tra il set di caratteri nativi e il set utilizzato dalle impostazioni locali.

Sintassi

template <class CharType>
class ctype : public ctype_base;

Parametri

CharType
Tipo utilizzato all'interno di un programma per codificare i caratteri.

Osservazioni:

Come in qualsiasi facet delle impostazioni locali, l'ID dell'oggetto statico ha un valore archiviato iniziale uguale a zero. Il primo tentativo di accedere al valore archiviato consente di archiviare un valore positivo univoco in id. I criteri di classificazione vengono forniti come tipo di maschera di bit annidata nella classe base ctype_base.

La libreria standard C++ definisce due specializzazioni esplicite di questo modello di classe:

  • ctype<char>, una specializzazione esplicita le cui differenze sono descritte separatamente. Per altre informazioni, vedere ctype<char> Classe.

  • ctype<wchar_t>, che considera gli elementi come caratteri wide.

Altre specializzazioni del modello ctype<CharType>di classe :

  • Convertire un valore ch di tipo CharType in un valore di tipo char con l'espressione (char)ch.

  • Convertire un byte di valore di tipo char in un valore di tipo CharType con l'espressione CharType(byte).

Tutte le altre operazioni vengono eseguite sui char valori nello stesso modo di per la specializzazione ctype<char>esplicita.

Costruttori

Costruttore Descrizione
ctype Costruttore per gli oggetti della classe ctype utilizzati come facet delle impostazioni locali per i caratteri.

Typedef

Nome tipo Descrizione
char_type Tipo che descrive un carattere utilizzato dalle impostazioni locali.

Funzioni membro

Funzione membro Descrizione
do_is Funzione virtuale chiamata per verificare se un singolo carattere presenta un attributo specifico oppure per classificare gli attributi di ogni carattere di un intervallo e archiviarli in una matrice.
do_narrow Funzione virtuale chiamata per convertire un carattere di tipo CharType utilizzato dalle impostazioni locali nel carattere corrispondente di tipo char del set di caratteri nativo.
do_scan_is Funzione virtuale chiamata per individuare il primo carattere di un intervallo che corrisponde a una maschera specificata.
do_scan_not Funzione virtuale chiamata per individuare il primo carattere di un intervallo che non corrisponde a una maschera specificata.
do_tolower Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri nelle rispettive lettere minuscole.
do_toupper Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri in lettere maiuscole.
do_widen Funzione virtuale chiamata per convertire un carattere di tipo char del set di caratteri nativi nel carattere corrispondente di tipo CharType utilizzato dalle impostazioni locali.
is Verifica se un singolo carattere presenta un attributo specifico oppure classifica gli attributi di ogni carattere di un intervallo e li archivia in una matrice.
narrow Converte un carattere di tipo CharType utilizzato dalle impostazioni locali nel carattere corrispondente di tipo char del set di caratteri nativi.
scan_is Individua il primo carattere di un intervallo che corrisponde a una maschera specificata.
scan_not Individua il primo carattere di un intervallo che non corrisponde a una maschera specificata.
tolower Converte un carattere o un intervallo di caratteri in lettere minuscole.
toupper Converte un carattere o un intervallo di caratteri in lettere maiuscole.
widen Converte un carattere di tipo char del set di caratteri nativi nel carattere corrispondente di tipo CharType utilizzato dalle impostazioni locali.

Requisiti

Intestazione:<impostazioni locali>

Spazio dei nomi: std

ctype::char_type

Tipo che descrive un carattere utilizzato dalle impostazioni locali.

typedef CharType char_type;

Osservazioni:

Il tipo è un sinonimo del parametro di modello CharType.

Esempio

Vedere la funzione membro widen per un esempio che usa char_type come valore restituito.

ctype::ctype

Costruttore per gli oggetti della classe ctype usati come facet delle impostazioni locali per i caratteri.

explicit ctype(size_t _Refs = 0);

Parametri

_Refs
Valore Integer che consente di specificare il tipo di gestione della memoria per l'oggetto.

Osservazioni:

I valori possibili per il parametro _Refs e il loro significato sono:

  • 0: la durata dell'oggetto è gestita dalle impostazioni locali che lo contengono.

  • 1: la durata dell'oggetto deve essere gestita manualmente.

  • > 1: questi valori non sono definiti.

Non è possibile fornire esempi diretti, poiché il distruttore è protetto.

Il costruttore inizializza l'oggetto di base locale::facet con locale::facet( _Refs).

ctype::d o_is

Funzione virtuale chiamata per verificare se un singolo carattere presenta un attributo specifico oppure per classificare gli attributi di ogni carattere di un intervallo e archiviarli in una matrice.

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

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

Parametri

maskVal
Valore della maschera in base a cui il carattere deve essere sottoposto a test.

Ch
Carattere i cui attributi devono essere sottoposti a test.

first
Puntatore al primo carattere dell'intervallo i cui attributi devono essere classificati.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo i cui attributi devono essere classificati.

dest
Puntatore all'inizio della matrice in cui sono archiviati i valori della maschera che caratterizzano gli attributi di ogni carattere.

Valore restituito

La prima funzione membro restituisce un valore booleano che è true se il carattere testato ha l'attributo descritto dal valore mask; false se l'attributo non riesce.

La seconda funzione membro restituisce una matrice contenente i valori della maschera che caratterizza gli attributi di ogni caratteri dell'intervallo.

Osservazioni:

I valori della maschera che classificano gli attributi dei caratteri sono specificati dalla classe ctype_base, da cui ctype deriva. La prima funzione membro può accettare espressioni per il primo parametro denominato maschera di bit e formato dalla combinazione di valori mask dagli operatori bit per bit (|, &, ^, ~).

Esempio

Vedere l'esempio di is, che chiama do_is.

ctype::d o_narrow

Funzione virtuale chiamata per convertire un carattere di tipo CharType utilizzato dalle impostazioni locali nel carattere corrispondente di tipo char del set di caratteri nativo.

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;

Parametri

Ch
Carattere di tipo Chartype usato dalle impostazioni locali da convertire.

default
Valore predefinito che deve essere assegnato dalla funzione membro ai caratteri di tipo CharType che non dispongono di caratteri corrispondenti di tipo char.

first
Puntatore al primo carattere in un intervallo di caratteri da convertire.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.

dest
Puntatore const al primo carattere di tipo char nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.

Valore restituito

La prima funzione membro protetta restituisce il carattere nativo di tipo char che corrisponde al carattere di parametro di tipo CharType o predefinito se non è definita alcuna controparte.

La seconda funzione membro protetto restituisce un puntatore per l'intervallo di destinazione di caratteri nativi convertiti a partire da caratteri di tipo CharType.

Osservazioni:

La seconda funzione modello membro protetto archivia in dest[ ] il valore do_narrow( first [ I], default), per I nell'intervallo [0,firstlast - ). I

Esempio

Vedere l'esempio di narrow, che chiama do_narrow.

ctype::d o_scan_is

Funzione virtuale chiamata per individuare il primo carattere di un intervallo che corrisponde a una maschera specificata.

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

Parametri

maskVal
Valore della maschera da confrontare per carattere.

first
Puntatore al primo carattere nell'intervallo da analizzare.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.

Valore restituito

Puntatore al primo carattere in un intervallo che corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.

Osservazioni:

La funzione membro protetto restituisce il più piccolo puntatore ptr nell'intervallo [ first, last) per il quale do_is( maskVal, * ptr) è true.

Esempio

Vedere l'esempio di scan_is, che chiama do_scan_is.

ctype::d o_scan_not

Funzione virtuale chiamata per individuare il primo carattere di un intervallo che non corrisponde a una maschera specificata.

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

Parametri

maskVal
Valore della maschera che non deve essere confrontata per carattere.

first
Puntatore al primo carattere nell'intervallo da analizzare.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.

Valore restituito

Puntatore al primo carattere in un intervallo che non corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.

Osservazioni:

La funzione membro protetto restituisce il più piccolo puntatore ptr nell'intervallo [ first, last) per il quale do_is( maskVal, * ptr) è false.

Esempio

Vedere l'esempio di scan_not, che chiama do_scan_not.

ctype::d o_tolower

Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri in lettere minuscole.

virtual CharType do_tolower(CharType ch) const;

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

Parametri

Ch
Carattere da convertire in minuscolo.

first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

Valore restituito

La prima funzione membro protetta restituisce la forma minuscola del parametro ch. Se non esiste alcuna forma minuscola, restituisce ch. La seconda funzione membro protetta restituisce l'ultima.

Osservazioni:

La seconda funzione modello membro protetto sostituisce ogni elemento first [ ], per I nell'intervallo [0, lastfirst - ), con do_tolower( [ first I]). I

Esempio

Vedere l'esempio di tolower che chiama do_tolower.

ctype::d o_toupper

Funzione virtuale chiamata per convertire un carattere o un intervallo di caratteri in lettere maiuscole.

virtual CharType do_toupper(CharType ch) const;

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

Parametri

Ch
Carattere da convertire in maiuscolo.

first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

Valore restituito

La prima funzione membro protetta restituisce la forma maiuscola del parametro ch. Se non esiste alcuna forma maiuscola, restituisce ch. La seconda funzione membro protetta restituisce l'ultima.

Osservazioni:

La seconda funzione modello membro protetto sostituisce ogni elemento first [ ], per I nell'intervallo [0, lastfirst - ), con do_toupper( [ first I]). I

Esempio

Vedere l'esempio di toupper che chiama do_toupper.

ctype::d o_widen

Funzione virtuale chiamata per convertire un carattere di tipo char del set di caratteri nativi nel carattere corrispondente di tipo CharType utilizzato dalle impostazioni locali.

virtual CharType do_widen(char byte) const;

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

Parametri

byte
Carattere di tipo char nel set di caratteri nativo da convertire.

first
Puntatore al primo carattere in un intervallo di caratteri da convertire.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.

dest
Puntatore al primo carattere di tipo CharType nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.

Valore restituito

La prima funzione membro protetto restituisce il carattere di tipo CharType che corrisponde al carattere del parametro di tipo char nativo.

La seconda funzione membro protetto restituisce un puntatore per l'intervallo di destinazione di caratteri di tipo CharType usati dalle impostazioni locali convertiti da caratteri nativi di tipo char.

Osservazioni:

La seconda funzione del modello membro protetto archivia in dest[ I] il valore do_widen( first [ I]), per I nell'intervallo [0, last - first).

Esempio

Vedere l'esempio di widen, che chiama do_widen.

ctype::is

Verifica se un singolo carattere presenta un attributo specifico oppure classifica gli attributi di ogni carattere di un intervallo e li archivia in una matrice.

bool is(mask maskVal, CharType ch) const;

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

Parametri

maskVal
Valore della maschera in base a cui il carattere deve essere sottoposto a test.

Ch
Carattere i cui attributi devono essere sottoposti a test.

first
Puntatore al primo carattere dell'intervallo i cui attributi devono essere classificati.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo i cui attributi devono essere classificati.

dest
Puntatore all'inizio della matrice in cui sono archiviati i valori della maschera che caratterizzano gli attributi di ogni carattere.

Valore restituito

La prima funzione membro restituisce true se il carattere sottoposto a test ha l'attributo descritto dal valore della maschera; false se non ha l'attributo.

La seconda funzione membro restituisce un puntatore all'ultimo carattere dell'intervallo i cui attributi devono essere classificati.

Osservazioni:

I valori della maschera che classificano gli attributi dei caratteri sono specificati dalla classe ctype_base, da cui deriva ctype. La prima funzione membro può accettare espressioni per il primo parametro denominato maschera di bit e formato dalla combinazione di valori mask dagli operatori bit per bit (|, &, ^, ~).

Esempio

// 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

Converte i caratteri di tipo CharType usati dalle impostazioni locali nei caratteri corrispondenti di tipo char usati nel set di caratteri nativo.

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

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

Parametri

Ch
Carattere di tipo Chartype usato dalle impostazioni locali da convertire.

default
Valore predefinito che deve essere assegnato dalla funzione membro ai caratteri di tipo CharType che non dispongono di caratteri corrispondenti di tipo char.

first
Puntatore al primo carattere in un intervallo di caratteri da convertire.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.

dest
Puntatore const al primo carattere di tipo char nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.

Valore restituito

La prima funzione membro restituisce il carattere nativo di tipo char che corrisponde al carattere del parametro di tipo CharType default se non è stato definito alcun equivalente.

La seconda funzione membro restituisce un puntatore per l'intervallo di destinazione di caratteri nativi convertiti a partire da caratteri di tipo CharType.

Osservazioni:

La prima funzione membro restituisce do_narrow(ch, default). La seconda funzione membro restituisce do_narrow (first, last, default, dest). Solo i caratteri d'origine di base hanno definitivamente un'immagine inversa univoca CharType in narrow. Per questi caratteri d'origine di base, l'invariabile seguente include: narrow ( widen ( c ), 0 ) == c.

Esempio

// 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

Individua il primo carattere di un intervallo che corrisponde a una maschera specificata.

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

Parametri

maskVal
Valore della maschera da confrontare per carattere.

first
Puntatore al primo carattere nell'intervallo da analizzare.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.

Valore restituito

Puntatore al primo carattere in un intervallo che corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.

Osservazioni:

La funzione membro restituisce do_scan_is(maskVal, first, last).

Esempio

// 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

Individua il primo carattere di un intervallo che non corrisponde a una maschera specificata.

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

Parametri

maskVal
Valore della maschera che non deve essere confrontata per carattere.

first
Puntatore al primo carattere nell'intervallo da analizzare.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo da analizzare.

Valore restituito

Puntatore al primo carattere in un intervallo che non corrisponde a una maschera specificata. Se non esiste alcun valore di questo tipo, la funzione restituisce l'ultima.

Osservazioni:

La funzione membro restituisce do_scan_not(maskVal, first, last).

Esempio

// 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

Converte un carattere o un intervallo di caratteri in lettere minuscole.

CharType tolower(CharType ch) const;

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

Parametri

Ch
Carattere da convertire in minuscolo.

first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

Valore restituito

La prima funzione membro restituisce la forma minuscola del parametro ch. Se non esiste alcuna forma minuscola, restituisce ch.

La seconda funzione membro restituisce l'ultima.

Osservazioni:

La prima funzione membro restituisce do_tolower(ch). La seconda funzione membro restituisce do_tolower(first, last).

Esempio

// 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

Converte un carattere o un intervallo di caratteri in lettere maiuscole.

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

Parametri

Ch
Carattere da convertire in lettere maiuscole.

first
Puntatore al primo carattere in un intervallo di caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri di cui deve essere convertita la combinazione di maiuscole/minuscole.

Valore restituito

La prima funzione membro restituisce la forma maiuscola del parametro ch. Se non esiste alcuna forma maiuscola, restituisce ch.

La seconda funzione membro restituisce l'ultima.

Osservazioni:

La prima funzione membro restituisce do_toupper(ch). La seconda funzione membro restituisce do_toupper( first, last).

Esempio

// 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

Converte un carattere di tipo char del set di caratteri nativi nel carattere corrispondente di tipo CharType utilizzato dalle impostazioni locali.

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

Parametri

byte
Carattere di tipo char nel set di caratteri nativo da convertire.

first
Puntatore al primo carattere in un intervallo di caratteri da convertire.

last
Puntatore al carattere immediatamente successivo all'ultimo carattere dell'intervallo dei caratteri da convertire.

dest
Puntatore al primo carattere di tipo CharType nell'intervallo di destinazione che archivia l'intervallo di caratteri convertito.

Valore restituito

La prima funzione membro restituisce il carattere di tipo CharType che corrisponde al carattere del parametro di tipo char nativo.

La seconda funzione membro restituisce un puntatore per l'intervallo di destinazione di caratteri di tipo CharType usati dalle impostazioni locali convertiti da caratteri nativi di tipo char.

Osservazioni:

La prima funzione membro restituisce do_widen(byte). La seconda funzione membro restituisce do_widen(first, last, dest).

Esempio

// 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!

Vedi anche

<impostazioni locali>
Thread Safety in the C++ Standard Library (Sicurezza dei thread nella libreria standard C++)