Clase ctype

Clase que proporciona una faceta que se emplea para clasificar los caracteres, pasar de mayúsculas a minúsculas y convertir entre el juego de caracteres nativo y el que usa la configuración regional.

Sintaxis

template <class CharType>
class ctype : public ctype_base;

Parámetros

CharType
Tipo usado dentro de un programa para codificar caracteres.

Comentarios

Como ocurre con cualquier faceta de configuración regional, el identificador de objeto estático tiene un valor almacenado inicial de cero. El primer intento de acceso a su valor almacenado almacena un valor positivo único en id. Se proporciona a los criterios de clasificación un tipo de máscara de bits anidado en el ctype_base de la clase base.

La biblioteca estándar de C++ define dos especializaciones explícitas de esta plantilla de clase:

  • ctype<char>, una especialización explícita cuyas diferencias se describen por separado. Para obtener más información, consulte la ctype<char> clase.

  • ctype<wchar_t>, que trata los elementos como caracteres anchos.

Otras especializaciones de plantilla de clase ctype<CharType>:

  • Convierte un valor ch de tipo CharType en un valor de tipo char con la expresión (char)ch.

  • Convierte un valor byte de tipo char en un valor de tipo CharType con la expresión CharType(byte).

Todas las demás operaciones se realizan sobre los valores char igual que para la especialización explícita ctype<char>.

Constructores

Constructor Descripción
ctype Constructor de objetos de clase ctype que actúan como facetas de configuración regional para los caracteres.

Typedefs

Nombre de tipo Descripción
char_type Tipo que describe un carácter usado por una configuración regional.

Funciones miembro

Función de miembro Descripción
do_is Función virtual a la que se llama para comprobar si un carácter individual tiene un atributo determinado, o para clasificar los atributos de cada carácter de un intervalo y almacenarlos en una matriz.
do_narrow Función virtual a la que se llama para convertir un carácter de tipo CharType usado por una configuración regional en el carácter correspondiente de tipo char del juego de caracteres nativo.
do_scan_is Función virtual a la que se llama para buscar el primer carácter de un intervalo que coincide con una máscara especificada.
do_scan_not Función virtual a la que se llama para buscar el primer carácter de un intervalo que no coincide con una máscara especificada.
do_tolower Función virtual a la que se llama para convertir a minúsculas un carácter o un intervalo de caracteres.
do_toupper Función virtual a la que se llama para convertir a mayúsculas un carácter o un intervalo de caracteres.
do_widen Función virtual a la que se llama para convertir un carácter de tipo char del juego de caracteres nativo en el carácter correspondiente de tipo CharType usado por una configuración regional.
is Comprueba si un carácter individual tiene un atributo determinado, o clasifica los atributos de cada carácter de un intervalo y los almacena en una matriz.
narrow Convierte un carácter de tipo CharType usado por una configuración regional en el carácter correspondiente de tipo char del juego de caracteres nativo.
scan_is Busca el primer carácter de un intervalo que coincide con una máscara especificada.
scan_not Busca el primer carácter de un intervalo que no coincide con una máscara especificada.
tolower Convierte a minúsculas un carácter o un intervalo de caracteres.
toupper Convierte a mayúsculas un carácter o un intervalo de caracteres.
widen Convierte un carácter de tipo char del juego de caracteres nativo en el carácter correspondiente de tipo CharType usado por una configuración regional.

Requisitos

Encabezado:<locale>

Espacio de nombres: std

ctype::char_type

Tipo que describe un carácter usado por una configuración regional.

typedef CharType char_type;

Comentarios

El tipo es un sinónimo del parámetro de plantilla CharType.

Ejemplo

Vea la función miembro widen para obtener un ejemplo que usa char_type como valor devuelto.

ctype::ctype

Constructor de objetos de clase ctype que actúan como facetas de configuración regional para los caracteres.

explicit ctype(size_t _Refs = 0);

Parámetros

_Refs
Valor entero que se usa para especificar el tipo de administración de memoria del objeto.

Comentarios

Los valores posibles del parámetro _Refs y su importancia son:

  • 0: la vigencia del objeto se administra mediante las configuraciones regionales que lo contienen.

  • 1: la vigencia del objeto se debe administrar de manera manual.

  • > 1: estos valores no están definidos.

No es posible mostrar ejemplos directos, porque el destructor está protegido.

El constructor inicializa su objeto base locale::facet con locale::facet( _Refs).

ctype::d o_is

Función virtual a la que se llama para comprobar si un carácter individual tiene un atributo determinado, o para clasificar los atributos de cada carácter de un intervalo y almacenarlos en una 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

maskVal
El valor de máscara para el que se probará el carácter.

Ch
Los caracteres cuyos atributos se van a probar.

first
Un puntero al primer carácter del intervalo de caracteres cuyos atributos se van a clasificar.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo cuyos atributos se van a clasificar.

dest
Un puntero al principio de la matriz en que se van a almacenar los valores de máscara que caracterizan a los atributos de cada uno de los caracteres.

Valor devuelto

La primera función miembro devuelve un valor booleano que es true si el carácter probado tiene el atributo descrito por el valor de máscara; false si no puede tener el atributo.

La segunda función miembro devuelve una matriz que contiene los valores de máscara que caracterizan a los atributos de cada uno de los caracteres del intervalo.

Comentarios

La clase ctype_base, de la que deriva ctype, proporciona los valores de máscara que clasifican los atributos de los caracteres. La primera función miembro puede aceptar expresiones para su primer parámetro, que se conoce como máscaras de bits, y está formado a partir de la combinación de valores de máscara por los operadores lógicos bit a bit (|, &, ^, ~).

Ejemplo

Vea el ejemplo de is, que llama a do_is.

ctype::d o_narrow

Función virtual a la que se llama para convertir un carácter de tipo CharType usado por una configuración regional en el carácter correspondiente de tipo char del juego 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
El carácter de tipo Chartype usado por la configuración regional que se va a convertir.

default
El valor predeterminado que asignará la función miembro a caracteres de tipo CharType que no tienen caracteres equivalente de tipo char.

first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.

dest
Un puntero const al primer carácter de tipo char del intervalo de destino que almacena el intervalo de caracteres convertido.

Valor devuelto

La primera función miembro protegida devuelve el carácter nativo de tipo char que corresponde con el carácter de parámetro de tipo CharType o default si no se ha definido ningún homólogo.

La segunda función miembro protegida devuelve un puntero al intervalo de destino de caracteres nativos convertidos a partir de caracteres de tipo CharType.

Comentarios

La segunda función de plantilla miembro protegida almacena en dest[ I] el valor do_narrow( first [ I, default), para I en el intervalo [0, last - first).

Ejemplo

Vea el ejemplo de narrow, que llama a do_narrow.

ctype::d o_scan_is

Función virtual a la que se llama para buscar el primer carácter de un intervalo que coincide con una máscara especificada.

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

Parámetros

maskVal
El valor de máscara que debe coincidir con un carácter.

first
Un puntero al primer carácter del intervalo que se va a examinar.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.

Valor devuelto

Un puntero al primer carácter de un intervalo que coincide con una máscara especificada. Si no existe este valor, la función devuelve last.

Comentarios

La función miembro protegida devuelve el puntero más pequeño ptr en el intervalo [ first, last) para el que do_is( maskVal, * ptr) es True.

Ejemplo

Vea el ejemplo de scan_is, que llama a do_scan_is.

ctype::d o_scan_not

Función virtual a la que se llama para buscar el primer carácter de un intervalo que no coincide con una máscara especificada.

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

Parámetros

maskVal
El valor de máscara que no debe coincidir con un carácter.

first
Un puntero al primer carácter del intervalo que se va a examinar.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.

Valor devuelto

Un puntero al primer carácter de un intervalo que no coincide con una máscara especificada. Si no existe este valor, la función devuelve last.

Comentarios

La función miembro protegida devuelve el puntero más pequeño ptr en el intervalo [ first, last) para el que do_is( maskVal, * ptr) es False.

Ejemplo

Vea el ejemplo de scan_not, que llama a do_scan_not.

ctype::d o_tolower

Función virtual a la que se llama para convertir a minúsculas un carácter o un intervalo de caracteres.

virtual CharType do_tolower(CharType ch) const;

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

Parámetros

Ch
El carácter que se va a convertir en minúscula.

first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

Valor devuelto

La primera función miembro protegida devuelve la forma en minúsculas del parámetro ch. Si no hay ningún formato en minúscula, devuelve ch. La segunda función miembro protegida devuelve last.

Comentarios

La segunda función de plantilla miembro protegida reemplaza cada elemento first [ I], para I en el intervalo [0, last - first), con do_tolower( first [ I]).

Ejemplo

Vea el ejemplo de tolower, que llama a do_tolower.

ctype::d o_toupper

Función virtual a la que se llama para convertir a mayúsculas un carácter o un intervalo de caracteres.

virtual CharType do_toupper(CharType ch) const;

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

Parámetros

Ch
El carácter que se va a convertir en mayúscula.

first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

Valor devuelto

La primera función miembro protegida devuelve la forma en mayúsculas del parámetro ch. Si no hay ningún formato en mayúscula, devuelve ch. La segunda función miembro protegida devuelve last.

Comentarios

La segunda función de plantilla miembro protegida reemplaza cada elemento first [ I], para I en el intervalo [0, last - first), con do_toupper( first [ I]).

Ejemplo

Vea el ejemplo de toupper, que llama a do_toupper.

ctype::d o_widen

Función virtual a la que se llama para convertir un carácter de tipo char del juego de caracteres nativo en el carácter correspondiente de tipo CharType usado por una configuración regional.

virtual CharType do_widen(char byte) const;

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

Parámetros

byte
El carácter de tipo char en el juego de caracteres nativo que se convertirá.

first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.

dest
Un puntero al primer carácter de tipo CharType del intervalo de destino que almacena el intervalo de caracteres convertido.

Valor devuelto

La primera función miembro protegida devuelve el carácter de tipo CharType que corresponde con el carácter de parámetro de tipo nativo char.

La segunda función miembro protegida devuelve un puntero al intervalo de destino de caracteres de tipo CharType usados por una configuración regional convertida a partir de caracteres nativos de tipo char.

Comentarios

La segunda función de plantilla miembro protegida almacena en dest[ I] el valor do_widen( first[ I]), para I en el intervalo [0, last - first).

Ejemplo

Vea el ejemplo de widen, que llama a do_widen.

ctype::is

Comprueba si un carácter individual tiene un atributo determinado, o clasifica los atributos de cada carácter de un intervalo y los almacena en una matriz.

bool is(mask maskVal, CharType ch) const;

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

Parámetros

maskVal
El valor de máscara para el que se probará el carácter.

Ch
Los caracteres cuyos atributos se van a probar.

first
Un puntero al primer carácter del intervalo de caracteres cuyos atributos se van a clasificar.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo cuyos atributos se van a clasificar.

dest
Un puntero al principio de la matriz en que se van a almacenar los valores de máscara que caracterizan a los atributos de cada uno de los caracteres.

Valor devuelto

La primera función miembro devuelve true si el carácter probado tiene el atributo descrito por el valor de máscara; false si no puede tener el atributo.

La segunda función miembro devuelve un puntero al último carácter del intervalo cuyos atributos se van a clasificar.

Comentarios

La clase ctype_base (Clase), de la que deriva ctype, proporciona los valores de máscara que clasifican los atributos de los caracteres. La primera función miembro puede aceptar expresiones para su primer parámetro, que se conoce como máscaras de bits, y está formado a partir de la combinación de valores de máscara por los operadores lógicos bit a bit (|, &, ^, ~).

Ejemplo

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

Convierte caracteres de tipo CharType usados por una configuración regional en los caracteres correspondientes de tipo char del juego 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
El carácter de tipo Chartype usado por la configuración regional que se va a convertir.

default
El valor predeterminado que asignará la función miembro a caracteres de tipo CharType que no tienen caracteres equivalente de tipo char.

first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.

dest
Un puntero const al primer carácter de tipo char del intervalo de destino que almacena el intervalo de caracteres convertido.

Valor devuelto

La primera función miembro devuelve el carácter nativo de tipo char que corresponde con el carácter de parámetro de tipo CharType default si no se ha definido ningún homólogo.

La segunda función miembro devuelve un puntero al intervalo de destino de caracteres nativos convertidos a partir de caracteres de tipo CharType.

Comentarios

La primera función miembro devuelve do_narrow(ch, default). La segunda función miembro devuelve do_narrow ( first, last, default, dest). Solo se garantiza que los caracteres de código fuente básicos tengan una imagen inversa única CharType en narrow. Para estos caracteres de código fuente básicos, la siguiente invariable contiene: narrow ( widen ( c ), 0 ) == c.

Ejemplo

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

Busca el primer carácter de un intervalo que coincide con una máscara especificada.

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

Parámetros

maskVal
El valor de máscara que debe coincidir con un carácter.

first
Un puntero al primer carácter del intervalo que se va a examinar.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.

Valor devuelto

Un puntero al primer carácter de un intervalo que coincide con una máscara especificada. Si no existe este valor, la función devuelve last.

Comentarios

La función miembro devuelve do_scan_is(maskVal, first, last).

Ejemplo

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

Busca el primer carácter de un intervalo que no coincide con una máscara especificada.

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

Parámetros

maskVal
El valor de máscara que no debe coincidir con un carácter.

first
Un puntero al primer carácter del intervalo que se va a examinar.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo que se va a examinar.

Valor devuelto

Un puntero al primer carácter de un intervalo que no coincide con una máscara especificada. Si no existe este valor, la función devuelve last.

Comentarios

La función miembro devuelve do_scan_not(maskVal, first, last).

Ejemplo

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

Convierte a minúsculas un carácter o un intervalo de caracteres.

CharType tolower(CharType ch) const;

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

Parámetros

Ch
El carácter que se va a convertir en minúscula.

first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

Valor devuelto

La primera función miembro devuelve la forma en minúsculas del parámetro ch. Si no hay ningún formato en minúscula, devuelve ch.

La segunda función miembro devuelve last.

Comentarios

La primera función miembro devuelve do_tolower(ch). La segunda función miembro devuelve do_tolower(first, last).

Ejemplo

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

Convierte a mayúsculas un carácter o un intervalo de caracteres.

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

Parámetros

Ch
El carácter que se va a convertir en mayúscula.

first
Un puntero al primer carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que va a pasar de mayúsculas a minúsculas (o viceversa).

Valor devuelto

La primera función miembro devuelve la forma en mayúsculas del parámetro ch. Si no hay ningún formato en mayúscula, devuelve ch.

La segunda función miembro devuelve last.

Comentarios

La primera función miembro devuelve do_toupper(ch). La segunda función miembro devuelve do_toupper( first, last).

Ejemplo

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

Convierte un carácter de tipo char del juego de caracteres nativo en el carácter correspondiente de tipo CharType usado por una configuración regional.

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

Parámetros

byte
El carácter de tipo char en el juego de caracteres nativo que se convertirá.

first
Un puntero al primer carácter del intervalo de caracteres que se va convertir.

last
Un puntero al carácter inmediatamente después del último carácter del intervalo de caracteres que se van a convertir.

dest
Un puntero al primer carácter de tipo CharType del intervalo de destino que almacena el intervalo de caracteres convertido.

Valor devuelto

La primera función miembro devuelve el carácter de tipo CharType que corresponde con el carácter de parámetro de tipo nativo char.

La segunda función miembro devuelve un puntero al intervalo de destino de caracteres de tipo CharType usados por una configuración regional convertida a partir de caracteres nativos de tipo char.

Comentarios

La primera función miembro devuelve do_widen(byte). La segunda función miembro devuelve do_widen(first, last, dest).

Ejemplo

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

Consulte también

<configuración regional>
Seguridad para subprocesos en la biblioteca estándar de C++