Partilhar via


Classe ctype

Uma classe que fornece uma faceta que é usada para classificar caracteres, converter de maiúsculas e minúsculas e converter entre o conjunto de caracteres nativo e o conjunto usado pela localidade.

Sintaxe

template <class CharType>
class ctype : public ctype_base;

Parâmetros

CharType
O tipo usado dentro de um programa para codificar caracteres.

Observações

Como em qualquer faceta de localidade, o ID do objeto estático tem um valor inicial armazenado de zero. A primeira tentativa de acessar seu valor armazenado armazena um valor positivo único no id. Os critérios de classificação são fornecidos um tipo de máscara de bits aninhada na classe base ctype_base.

A biblioteca padrão do C++ define duas especializações explícitas desse modelo de classe:

  • ctype<char>, uma especialização explícita cujas diferenças são descritas separadamente. Para obter mais informações, consulte ctype<char> Class.

  • ctype<wchar_t>, que trata os elementos como caracteres amplos.

Outras especializações do modelo de classe ctype<CharType>:

  • Converter um valor ch do tipo CharType em um valor do tipo char com a expressão (char)ch.

  • Converter um byte de valor do tipo char em um valor do tipo CharType com a expressão CharType(byte).

Todas as outras operações são realizadas em char valores da mesma forma que para a especialização ctype<char>explícita.

Construtores

Construtor Descrição
Tipo de caneta Construtor para objetos de classe ctype que servem como facetas de localidade para caracteres.

Typedefs (definições de tipos)

Nome do tipo Descrição
char_type Um tipo que descreve um caractere usado por uma localidade.

Funções de membro

Função de membro Descrição
do_is Uma função virtual chamada para testar se um único caractere tem um atributo específico ou classificar os atributos de cada caractere em um intervalo e armazená-los em uma matriz.
do_narrow Uma função virtual chamada para converter um caractere do tipo CharType usado por uma localidade para o caractere correspondente do tipo char no conjunto de caracteres nativo.
do_scan_is Uma função virtual chamada para localizar o primeiro caractere em um intervalo que corresponde a uma máscara especificada.
do_scan_not Uma função virtual chamada para localizar o primeiro caractere em um intervalo que não corresponde a uma máscara especificada.
do_tolower Uma função virtual chamada para converter um caractere ou um intervalo de caracteres em minúsculas.
do_toupper Uma função virtual chamada para converter um caractere ou um intervalo de caracteres em maiúsculas.
do_widen Uma função virtual chamada para converter um caractere do tipo char no conjunto de caracteres nativo para o caractere correspondente do tipo CharType usado por uma localidade.
é Testa se um único caractere tem um atributo específico ou classifica os atributos de cada caractere em um intervalo e os armazena em uma matriz.
estreito Converte um caractere do tipo CharType usado por uma localidade para o caractere correspondente do tipo char no conjunto de caracteres nativo.
scan_is Localiza o primeiro caractere em um intervalo que corresponde a uma máscara especificada.
scan_not Localiza o primeiro caractere em um intervalo que não corresponde a uma máscara especificada.
abaixar Converte um caractere ou um intervalo de caracteres em minúsculas.
Tosuperior Converte um caractere ou um intervalo de caracteres em maiúsculas.
alargar Converte um caractere do tipo char no conjunto de caracteres nativo para o caractere correspondente do tipo CharType usado por uma localidade.

Requerimentos

Cabeçalho:<localidade>

Espaço de nomes: std

ctype::char_type

Um tipo que descreve um caractere usado por uma localidade.

typedef CharType char_type;

Observações

O tipo é um sinônimo para o parâmetro de modelo CharType.

Exemplo

Consulte a função de membro widen para obter um exemplo que usa char_type como um valor de retorno.

ctype::ctype

Construtor para objetos de classe ctype que servem como facetas de localidade para caracteres.

explicit ctype(size_t _Refs = 0);

Parâmetros

_Refs
Valor inteiro usado para especificar o tipo de gerenciamento de memória para o objeto.

Observações

Os valores possíveis para o parâmetro _Refs e sua significância são:

  • 0: O tempo de vida do objeto é gerenciado pelas localidades que o contêm.

  • 1: O tempo de vida do objeto deve ser gerenciado manualmente.

  • > 1: Estes valores não estão definidos.

Não são possíveis exemplos diretos, porque o destruidor está protegido.

O construtor inicializa seu locale::facet objeto base com locale::facet(_Refs).

ctype::d o_is

Uma função virtual chamada para testar se um único caractere tem um atributo específico ou classificar os atributos de cada caractere em um intervalo e armazená-los em uma matriz.

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

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

Parâmetros

máscaraVal
O valor da máscara para o qual o caractere deve ser testado.

ch
O personagem cujos atributos devem ser testados.

primeira
Um ponteiro para o primeiro caractere no intervalo cujos atributos devem ser classificados.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo cujos atributos devem ser classificados.

dest
Um ponteiro para o início da matriz onde os valores de máscara que caracterizam os atributos de cada um dos caracteres devem ser armazenados.

Valor de retorno

A primeira função de membro retorna um valor booleano, ou seja true , se o caractere testado tiver o atributo descrito pelo valor da máscara, false se ele não tiver o atributo.

A segunda função de membro retorna uma matriz contendo os valores de máscara que caracterizam os atributos de cada um dos caracteres no intervalo.

Observações

Os valores de máscara que classificam os atributos dos caracteres são fornecidos pela classe ctype_base, da qual ctype deriva. A primeira função de membro pode aceitar expressões para seu primeiro parâmetro referido como bitmasks e formado a partir da combinação de valores de máscara pelos operadores bitwise (|, &, ^~, ).

Exemplo

Veja o exemplo de is, que chama do_is.

ctype::d o_narrow

Uma função virtual chamada para converter um caractere do tipo CharType usado por uma localidade para o caractere correspondente do tipo char no conjunto de caracteres 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;

Parâmetros

ch
O caractere do tipo Chartype usado pela localidade a ser convertida.

padrão
O valor padrão a ser atribuído pela função de membro a caracteres do tipo CharType que não têm caracteres correspondentes do tipo char.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.

dest
Um ponteiro const para o primeiro caractere do tipo char no intervalo de destino que armazena o intervalo de caracteres convertido.

Valor de retorno

A primeira função de membro protegido retorna o caractere nativo do tipo char que corresponde ao caractere de parâmetro do tipo CharType ou padrão se nenhuma contrapartida for definida.

A segunda função de membro protegido retorna um ponteiro para o intervalo de destino de caracteres nativos convertidos de caracteres do tipo CharType.

Observações

A segunda função de modelo de membro protegido armazena em dest[ ] o valor I(do_narrow [ ], firstI), para default no intervalo [0, Ilast - ). first

Exemplo

Veja o exemplo de narrow, que chama do_narrow.

ctype::d o_scan_is

Uma função virtual chamada para localizar o primeiro caractere em um intervalo que corresponde a uma máscara especificada.

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

Parâmetros

máscaraVal
O valor da máscara a ser correspondido por um caractere.

primeira
Um ponteiro para o primeiro caractere no intervalo a ser verificado.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser verificado.

Valor de retorno

Um ponteiro para o primeiro caractere em um intervalo que corresponde a uma máscara especificada. Se esse valor não existir, a função retornará por último.

Observações

A função de membro protegido retorna o menor ponteiro ptr no intervalo [ first, last) para o qual do_is(maskVal, * ptr) é true.

Exemplo

Veja o exemplo para scan_is, que chama do_scan_is.

ctype::d o_scan_not

Uma função virtual chamada para localizar o primeiro caractere em um intervalo que não corresponde a uma máscara especificada.

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

Parâmetros

máscaraVal
O valor da máscara não deve ser correspondido por um caractere.

primeira
Um ponteiro para o primeiro caractere no intervalo a ser verificado.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser verificado.

Valor de retorno

Um ponteiro para o primeiro caractere em um intervalo que não corresponde a uma máscara especificada. Se esse valor não existir, a função retornará por último.

Observações

A função de membro protegido retorna o menor ponteiro ptr no intervalo [ first, last) para o qual do_is(maskVal, * ptr) é false.

Exemplo

Veja o exemplo para scan_not, que chama do_scan_not.

ctype::d o_tolower

Uma função virtual chamada para converter um caractere ou um intervalo de caracteres em minúsculas.

virtual CharType do_tolower(CharType ch) const;

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

Parâmetros

ch
O caractere a ser convertido em minúsculas.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres cujos casos devem ser convertidos.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujos casos devem ser convertidos.

Valor de retorno

A primeira função de membro protegido retorna a forma minúscula do parâmetro ch. Se não existir uma forma minúscula, ela retornará ch. A segunda função de membro protegido retorna por último.

Observações

A segunda função de modelo de membro protegido substitui cada elemento first [ ], para I no intervalo [0,Ilast - ), por first(do_tolower [ ]). firstI

Exemplo

Veja o exemplo de tolower, que chama do_tolower.

ctype::d o_toupper

Uma função virtual chamada para converter um caractere ou um intervalo de caracteres em maiúsculas.

virtual CharType do_toupper(CharType ch) const;

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

Parâmetros

ch
O caractere a ser convertido em maiúsculas.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres cujos casos devem ser convertidos.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujos casos devem ser convertidos.

Valor de retorno

A primeira função de membro protegido retorna a forma maiúscula do parâmetro ch. Se não existir uma forma maiúscula, ela retornará ch. A segunda função de membro protegido retorna por último.

Observações

A segunda função de modelo de membro protegido substitui cada elemento first [ ], para I no intervalo [0,Ilast - ), por first(do_toupper [ ]). firstI

Exemplo

Veja o exemplo de toupper, que chama do_toupper.

ctype::d o_widen

Uma função virtual chamada para converter um caractere do tipo char no conjunto de caracteres nativo para o caractere correspondente do tipo CharType usado por uma localidade.

virtual CharType do_widen(char byte) const;

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

Parâmetros

byte
O caractere do tipo char no conjunto de caracteres nativo a ser convertido.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.

dest
Um ponteiro para o primeiro caractere do tipo CharType no intervalo de destino que armazena o intervalo de caracteres convertido.

Valor de retorno

A primeira função de membro protegido retorna o caractere do tipo CharType que corresponde ao caractere de parâmetro do tipo charnativo .

A segunda função de membro protegido retorna um ponteiro para o intervalo de destino de caracteres do tipo CharType usado por uma localidade convertida de caracteres nativos do tipo char.

Observações

A segunda função de modelo de membro protegido armazena em dest[ ] o valor I(do_widen[ first]), para I no intervalo [0, Ilast - ). first

Exemplo

Veja o exemplo para widen, que chama do_widen.

ctype::é

Testa se um único caractere tem um atributo específico ou classifica os atributos de cada caractere em um intervalo e os armazena em uma matriz.

bool is(mask maskVal, CharType ch) const;

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

Parâmetros

máscaraVal
O valor da máscara para o qual o caractere deve ser testado.

ch
O personagem cujos atributos devem ser testados.

primeira
Um ponteiro para o primeiro caractere no intervalo cujos atributos devem ser classificados.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo cujos atributos devem ser classificados.

dest
Um ponteiro para o início da matriz onde os valores de máscara que caracterizam os atributos de cada um dos caracteres devem ser armazenados.

Valor de retorno

A primeira função de membro retorna true se o caractere testado tiver o atributo descrito pelo valor false da máscara, se ele não tiver o atributo.

A segunda função de membro retorna um ponteiro para o último caractere no intervalo cujos atributos devem ser classificados.

Observações

Os valores de máscara que classificam os atributos dos caracteres são fornecidos pela classe ctype_base Class, da qual ctype deriva. A primeira função de membro pode aceitar expressões para seu primeiro parâmetro referido como bitmasks e formado a partir da combinação de valores de máscara pelos operadores bitwise (|, &, ^~, ).

Exemplo

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

Converte caracteres do tipo CharType usado por uma localidade para os caracteres correspondentes do tipo char no conjunto de caracteres nativo.

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

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

Parâmetros

ch
O caractere do tipo Chartype usado pela localidade a ser convertida.

padrão
O valor padrão a ser atribuído pela função de membro a caracteres do tipo CharType que não têm caracteres correspondentes do tipo char.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.

dest
Um ponteiro const para o primeiro caractere do tipo char no intervalo de destino que armazena o intervalo de caracteres convertido.

Valor de retorno

A primeira função de membro retorna o caractere nativo do tipo char que corresponde ao caractere de parâmetro do tipo CharType default se não a contrapartida for definida.

A segunda função de membro retorna um ponteiro para o intervalo de destino de caracteres nativos convertidos de caracteres do tipo CharType.

Observações

A primeira função de membro retorna do_narrow(ch, default). A segunda função de membro retorna do_narrow (first, last, default, dest). Apenas os caracteres de origem básicos têm a garantia de ter uma imagem CharType inversa única em narrow. Para estes caracteres de origem básicos, os seguintes invariantes mantêm: narrow ( widen ( c ), 0 ) == c.

Exemplo

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

Localiza o primeiro caractere em um intervalo que corresponde a uma máscara especificada.

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

Parâmetros

máscaraVal
O valor da máscara a ser correspondido por um caractere.

primeira
Um ponteiro para o primeiro caractere no intervalo a ser verificado.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser verificado.

Valor de retorno

Um ponteiro para o primeiro caractere em um intervalo que corresponde a uma máscara especificada. Se esse valor não existir, a função retornará por último.

Observações

A função de membro retorna do_scan_is(maskVal, first, last).

Exemplo

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

Localiza o primeiro caractere em um intervalo que não corresponde a uma máscara especificada.

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

Parâmetros

máscaraVal
O valor da máscara não deve ser correspondido por um caractere.

primeira
Um ponteiro para o primeiro caractere no intervalo a ser verificado.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo a ser verificado.

Valor de retorno

Um ponteiro para o primeiro caractere em um intervalo que não corresponde a uma máscara especificada. Se esse valor não existir, a função retornará por último.

Observações

A função de membro retorna do_scan_not(maskVal, first, last).

Exemplo

// 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 um caractere ou um intervalo de caracteres em minúsculas.

CharType tolower(CharType ch) const;

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

Parâmetros

ch
O caractere a ser convertido em minúsculas.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres cujos casos devem ser convertidos.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujos casos devem ser convertidos.

Valor de retorno

A primeira função de membro retorna a forma minúscula do parâmetro ch. Se não existir uma forma minúscula, ela retornará ch.

A segunda função de membro retorna por último.

Observações

A primeira função de membro retorna do_tolower(ch). A segunda função de membro retorna do_tolower(first, last).

Exemplo

// 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 um caractere ou um intervalo de caracteres em maiúsculas.

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

Parâmetros

ch
O caractere a ser convertido em maiúsculas.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres cujos casos devem ser convertidos.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres cujos casos devem ser convertidos.

Valor de retorno

A primeira função de membro retorna a forma maiúscula do parâmetro ch. Se não existir uma forma maiúscula, ela retornará ch.

A segunda função de membro retorna por último.

Observações

A primeira função de membro retorna do_toupper(ch). A segunda função de membro retorna do_toupper(first, last).

Exemplo

// 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 um caractere do tipo char no conjunto de caracteres nativo para o caractere correspondente do tipo CharType usado por uma localidade.

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

Parâmetros

byte
O caractere do tipo char no conjunto de caracteres nativo a ser convertido.

primeira
Um ponteiro para o primeiro caractere no intervalo de caracteres a ser convertido.

último
Um ponteiro para o caractere imediatamente após o último caractere no intervalo de caracteres a ser convertido.

dest
Um ponteiro para o primeiro caractere do tipo CharType no intervalo de destino que armazena o intervalo de caracteres convertido.

Valor de retorno

A primeira função de membro retorna o caractere do tipo CharType que corresponde ao caractere de parâmetro do tipo charnativo .

A segunda função de membro retorna um ponteiro para o intervalo de destino de caracteres do tipo CharType usado por uma localidade convertida de caracteres nativos do tipo char.

Observações

A primeira função de membro retorna do_widen(byte). A segunda função de membro retorna do_widen(first, lastdest, ).

Exemplo

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

Ver também

<localidade>
segurança de threads na biblioteca padrão C++