Sdílet prostřednictvím


ctype – třída

Třída poskytující omezující vlastnost, která se používá ke klasifikaci znaků, převodu z velkých a malých písmen a převodu mezi nativní znakovou sadou a sadou používanou národním prostředím.

Syntaxe

template <class CharType>
class ctype : public ctype_base;

Parametry

CharType
Typ používaný v rámci programu ke kódování znaků.

Poznámky

Stejně jako u omezující vlastnosti národního prostředí má ID statického objektu počáteční uloženou hodnotu nula. První pokus o přístup k uložené hodnotě ukládá jedinečnou kladnou hodnotu v id. Klasifikační kritéria mají k dispozici vnořený typ bitové masky v základní třídě ctype_base.

Standardní knihovna C++ definuje dvě explicitní specializace této šablony třídy:

  • ctype<char>, explicitní specializace, jejíž rozdíly jsou popsány samostatně. Další informace naleznete v tématu ctype<char> Třída.

  • ctype<wchar_t>, který zpracovává prvky jako široké znaky.

Další specializace šablony ctype<CharType>třídy:

  • Převede hodnotu typu CharType na hodnotu typu char pomocí výrazu (char)ch.

  • Převede bajt hodnoty typu char na hodnotu typu CharType s výrazem CharType(byte).

Všechny ostatní operace se provádějí na char hodnotách stejným způsobem jako u explicitní specializace ctype<char>.

Konstruktory

Konstruktor Popis
ctype Konstruktor pro objekty třídy ctype , které slouží jako omezující vlastnosti národního prostředí pro znaky.

Typedefs

Název typu Popis
char_type Typ, který popisuje znak používaný národním prostředním.

Členské funkce

Členová funkce Popis
do_is Virtuální funkce volaná k ověření, zda má jeden znak konkrétní atribut, nebo ke klasifikaci atributů v jednotlivých kontejnerech v rozsahu a jejich uložení v poli.
do_narrow Virtuální funkce volána k převodu znaku typu CharType používaného národním prostředím na odpovídající znak typu char v nativní znakové sadě.
do_scan_is Virtuální funkce volaná k vyhledání prvního znaku v rozsahu, který odpovídá zadané masce.
do_scan_not Virtuální funkce volaná k vyhledání prvního znaku v rozsahu, který neodpovídá zadané masce.
do_tolower Virtuální funkce volaná k převedení znaku nebo rozsahu znaků na malá písmena.
do_toupper Virtuální funkce volaná k převedení znaku nebo rozsahu znaků na velká písmena.
do_widen Virtuální funkce volána k převodu znaku typu char v nativní znakové sadě na odpovídající znak typu CharType používaný národním prostředím.
is Ověřuje, zda má jeden znak konkrétní atribut, nebo klasifikuje atributy v jednotlivých kontejnerech v rozsahu a uloží je v poli.
úzký Převede znak typu CharType používaný národním prostředím na odpovídající znak znak typu v nativní znakové sadě.
scan_is Vyhledá první znak v rozsahu, který odpovídá zadané masce.
scan_not Vyhledá první znak v rozsahu, který neodpovídá zadané masce.
tolower Převede znak nebo rozsah znaků na malá písmena.
toupper Převede znak nebo rozsah znaků na velká písmena.
rozšířit Převede znak typu char v nativní znakové sadě na odpovídající znak typu CharType používaný národním prostředím.

Požadavky

Záhlaví:<národní prostředí>

Obor názvů: std

ctype::char_type

Typ, který popisuje znak používaný národním prostředním.

typedef CharType char_type;

Poznámky

Typ je synonymem parametru šablony CharType.

Příklad

Podívejte se na rozšíření členské funkce pro příklad, který se používá char_type jako návratová hodnota.

ctype::ctype

Konstruktor pro objekty třídy ctype, které slouží jako omezující vlastnosti národního prostředí pro znaky.

explicit ctype(size_t _Refs = 0);

Parametry

_Refs
Celočíselná hodnota použitá k určení typu správy paměti pro objekt.

Poznámky

Možné hodnoty pro parametr _Refs a jejich významnost jsou:

  • 0: Životnost objektu je spravována národními prostředími, které ho obsahují.

  • 1: Životnost objektu musí být spravována ručně.

  • > 1: Tyto hodnoty nejsou definovány.

Nejsou možné žádné přímé příklady, protože destruktor je chráněn.

Konstruktor inicializuje svůj locale::facet základní objekt s národním prostředím ::facet( _Refs).

ctype::d o_is

Virtuální funkce volaná k ověření, zda má jeden znak konkrétní atribut, nebo ke klasifikaci atributů v jednotlivých kontejnerech v rozsahu a jejich uložení v poli.

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

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

Parametry

maskVal
Hodnota masky, pro kterou má být znak testován.

ch
Znak, jehož atributy se mají testovat.

první
Ukazatel na první znak v oblasti, jejíž atributy mají být klasifikovány.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti, jejíž atributy mají být klasifikovány.

dest
Ukazatel na začátek pole, kde se hodnoty masky označující atributy každého z znaků mají být uloženy.

Návratová hodnota

První členská funkce vrátí logickou hodnotu, která je true v případě, že testovaný znak má atribut popsaný hodnotou masky; false pokud atribut nemá.

Druhá členová funkce vrátí matici obsahující hodnoty masky, které charakterizují atributy jednotlivých znaků v oblasti.

Poznámky

Hodnoty masky klasifikující atributy znaků jsou poskytovány třídou ctype_base, ze které ctype odvozuje. První členová funkce může přijímat výrazy pro první parametr, který se označuje jako bitová maska, a vytvořit z kombinace hodnot masky bitovými operátory (|, &, ^, ~).

Příklad

Podívejte se na příklad, který volá do_is.

ctype::d o_narrow

Virtuální funkce volána k převodu znaku typu CharType používaného národním prostředím na odpovídající znak typu char v nativní znakové sadě.

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;

Parametry

ch
Znak typu Chartype používaný národním prostředím, který má být převeden.

default
Výchozí hodnota, kterou má členová funkce přiřadit znakům typu CharType , které nemají protějškové znaky typu char.

první
Ukazatel na první znak v rozsahu znaků, který se má převést.

poslední
Ukazatel na znak bezprostředně za posledním znakem v rozsahu znaků, který se má převést.

dest
Ukazatel const na první znak typu char v cílovém rozsahu, který ukládá převedenou oblast znaků.

Návratová hodnota

První chráněná členová funkce vrátí nativní znak znaku typu, který odpovídá znaku parametru typu CharType nebo výchozí , pokud není definován žádný protějšek.

Druhá chráněná členová funkce vrátí ukazatel na cílový rozsah nativních znaků převedených ze znaků typu CharType.

Poznámky

Druhá chráněná funkce šablony člena ukládá do [ ] hodnota do_narrow( first [ I], default), pro I interval [0,first - last ). Idest

Příklad

Podívejte se na příklad zúžení, které volá do_narrow.

ctype::d o_scan_is

Virtuální funkce volaná k vyhledání prvního znaku v rozsahu, který odpovídá zadané masce.

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

Parametry

maskVal
Hodnota masky, která se má shodovat znakem.

první
Ukazatel na první znak v oblasti, který se má naskenovat.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti, který chcete zkontrolovat.

Návratová hodnota

Ukazatel na první znak v oblasti, která odpovídá zadané masce. Pokud žádná taková hodnota neexistuje, vrátí funkce poslední hodnotu.

Poznámky

Chráněná členová funkce vrátí nejmenší ukazatel ptr v rozsahu [ first, last), pro který do_is( maskVal, * ptr) je true.

Příklad

Podívejte se na příklad scan_is, který volá do_scan_is.

ctype::d o_scan_not

Virtuální funkce volaná k vyhledání prvního znaku v rozsahu, který neodpovídá zadané masce.

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

Parametry

maskVal
Hodnota masky, která se neshoduje znakem.

první
Ukazatel na první znak v oblasti, který se má naskenovat.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti, který chcete zkontrolovat.

Návratová hodnota

Ukazatel na první znak v oblasti, která neodpovídá zadané masce. Pokud žádná taková hodnota neexistuje, vrátí funkce poslední hodnotu.

Poznámky

Chráněná členová funkce vrátí nejmenší ukazatel ptr v rozsahu [ , firstlast) pro který do_is( maskVal, * ptr) je false.

Příklad

Podívejte se na příklad scan_not, který volá do_scan_not.

ctype::d o_tolower

Virtuální funkce volaná k převodu znaku nebo rozsahu znaků na malá písmena.

virtual CharType do_tolower(CharType ch) const;

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

Parametry

ch
Znak, který se má převést na malá písmena.

první
Ukazatel na první znak v oblasti znaků, jejichž případy mají být převedeny.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti znaků, jejichž případy se mají převést.

Návratová hodnota

První chráněná členová funkce vrátí malá písmena parametru ch. Pokud neexistuje žádný formulář malými písmeny, vrátí hodnotu ch. Druhá chráněná členová funkce vrátí poslední.

Poznámky

Druhá chráněná funkce šablony nahrazuje každý prvek first [ ], pro I v intervalu [0, - lastfirst ), s do_tolower( first [ I]). I

Příklad

Podívejte se na příklad pro tolower, který volá do_tolower.

ctype::d o_toupper

Virtuální funkce volaná k převedení znaku nebo rozsahu znaků na velká písmena.

virtual CharType do_toupper(CharType ch) const;

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

Parametry

ch
Znak, který se má převést na velká písmena.

první
Ukazatel na první znak v oblasti znaků, jejichž případy mají být převedeny.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti znaků, jejichž případy se mají převést.

Návratová hodnota

První chráněná členová funkce vrátí velká písmena parametru ch. Pokud neexistuje žádný velká písmena, vrátí hodnotu ch. Druhá chráněná členová funkce vrátí poslední.

Poznámky

Druhá chráněná funkce šablony nahrazuje každý prvek first [ ], pro I v intervalu [0, - lastfirst ), s do_toupper( first [ I]). I

Příklad

Podívejte se na příklad toupperu, který volá do_toupper.

ctype::d o_widen

Virtuální funkce volána k převodu znaku typu char v nativní znakové sadě na odpovídající znak typu CharType používaný národním prostředím.

virtual CharType do_widen(char byte) const;

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

Parametry

byte
Znak typu char v nativní znakové sadě, který se má převést.

první
Ukazatel na první znak v rozsahu znaků, který se má převést.

poslední
Ukazatel na znak bezprostředně za posledním znakem v rozsahu znaků, který se má převést.

dest
Ukazatel na první znak typu CharType v cílovém rozsahu, který ukládá převedenou oblast znaků.

Návratová hodnota

První chráněná členová funkce vrátí znak typu CharType , který odpovídá znaku parametru nativního typu char.

Druhá chráněná členová funkce vrátí ukazatel na cílový rozsah znaků typu CharType používaného národním prostředím převedeným z nativních znaků typu char.

Poznámky

Druhá chráněná funkce šablony člena ukládá I[ ] hodnotu do_widen( first[ I]), pro I interval [0,firstlast - ).dest

Příklad

Podívejte se na příklad rozšíření, který volá do_widen.

ctype::is

Testuje, zda jeden znak má určitý atribut nebo klasifikuje atributy každého znaku v oblasti a ukládá je do pole.

bool is(mask maskVal, CharType ch) const;

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

Parametry

maskVal
Hodnota masky, pro kterou má být znak testován.

ch
Znak, jehož atributy se mají testovat.

první
Ukazatel na první znak v oblasti, jejíž atributy mají být klasifikovány.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti, jejíž atributy mají být klasifikovány.

dest
Ukazatel na začátek pole, kde se hodnoty masky označující atributy každého z znaků mají být uloženy.

Návratová hodnota

První členová funkce vrátí true , pokud má testovaný znak atribut popsaný hodnotou masky; false pokud atribut nemá.

Druhá členová funkce vrátí ukazatel na poslední znak v oblasti, jejíž atributy mají být klasifikovány.

Poznámky

Hodnoty masky klasifikující atributy znaků jsou poskytovány třídou ctype_base Třída, ze které ctype odvozuje. První členová funkce může přijímat výrazy pro první parametr, který se označuje jako bitová maska, a vytvořit z kombinace hodnot masky bitovými operátory (|, &, ^, ~).

Příklad

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

Převede znaky typu CharType používané národním prostředím na odpovídající znaky typu char v nativní znakové sadě.

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

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

Parametry

ch
Znak typu Chartype používaný národním prostředím, který má být převeden.

default
Výchozí hodnota, kterou má členová funkce přiřadit znakům typu CharType , které nemají protějškové znaky typu char.

první
Ukazatel na první znak v rozsahu znaků, který se má převést.

poslední
Ukazatel na znak bezprostředně za posledním znakem v rozsahu znaků, který se má převést.

dest
Ukazatel const na první znak typu char v cílovém rozsahu, který ukládá převedenou oblast znaků.

Návratová hodnota

První členová funkce vrátí nativní znak typu char , který odpovídá znaku parametru typu CharType default , pokud není definován.

Druhá členová funkce vrátí ukazatel na cílový rozsah nativních znaků převedených z znaků typu CharType.

Poznámky

První členová funkce vrátí do_narrow(ch, default). Druhá členová funkce vrátí do_narrow (first, last, default, dest). Pouze základní zdrojové znaky jsou zaručeny, že mají jedinečný inverzní obrázek CharType pod narrow. Pro tyto základní zdrojové znaky platí následující invariantní: narrow ( rozšiřující ( c ), 0 ) == c.

Příklad

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

Vyhledá první znak v rozsahu, který odpovídá zadané masce.

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

Parametry

maskVal
Hodnota masky, která se má shodovat znakem.

první
Ukazatel na první znak v oblasti, který se má naskenovat.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti, který chcete zkontrolovat.

Návratová hodnota

Ukazatel na první znak v oblasti, která odpovídá zadané masce. Pokud žádná taková hodnota neexistuje, vrátí funkce poslední hodnotu.

Poznámky

Členová funkce vrátí do_scan_is(maskVal, first, last).

Příklad

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

Vyhledá první znak v rozsahu, který neodpovídá zadané masce.

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

Parametry

maskVal
Hodnota masky, která se neshoduje znakem.

první
Ukazatel na první znak v oblasti, který se má naskenovat.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti, který chcete zkontrolovat.

Návratová hodnota

Ukazatel na první znak v oblasti, která neodpovídá zadané masce. Pokud žádná taková hodnota neexistuje, vrátí funkce poslední hodnotu.

Poznámky

Členová funkce vrátí do_scan_not(maskVal, first, last).

Příklad

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

Převede znak nebo rozsah znaků na malá písmena.

CharType tolower(CharType ch) const;

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

Parametry

ch
Znak, který se má převést na malá písmena.

první
Ukazatel na první znak v oblasti znaků, jejichž případy mají být převedeny.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti znaků, jejichž případy se mají převést.

Návratová hodnota

První členová funkce vrátí malá písmena parametru ch. Pokud neexistuje žádný formulář malými písmeny, vrátí hodnotu ch.

Druhá členová funkce vrátí poslední.

Poznámky

První členová funkce vrátí do_tolower(ch). Druhá členová funkce vrátí do_tolower(first, last).

Příklad

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

Převede znak nebo rozsah znaků na velká písmena.

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

Parametry

ch
Znak, který se má převést na velká písmena.

první
Ukazatel na první znak v oblasti znaků, jejichž případy mají být převedeny.

poslední
Ukazatel na znak bezprostředně za posledním znakem v oblasti znaků, jejichž případy se mají převést.

Návratová hodnota

První členová funkce vrátí velká písmena parametru ch. Pokud neexistuje žádný velká písmena, vrátí hodnotu ch.

Druhá členová funkce vrátí poslední.

Poznámky

První členová funkce vrátí do_toupper(ch). Druhá členová funkce vrátí do_toupper( first, last).

Příklad

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

Převede znak typu char v nativní znakové sadě na odpovídající znak typu CharType používaný národním prostředím.

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

Parametry

byte
Znak typu char v nativní znakové sadě, který se má převést.

první
Ukazatel na první znak v rozsahu znaků, který se má převést.

poslední
Ukazatel na znak bezprostředně za posledním znakem v rozsahu znaků, který se má převést.

dest
Ukazatel na první znak typu CharType v cílovém rozsahu, který ukládá převedenou oblast znaků.

Návratová hodnota

První členová funkce vrátí znak typu CharType , který odpovídá znaku parametru nativního typu char.

Druhá členová funkce vrátí ukazatel na cílový rozsah znaků typu CharType používaného národním prostředím převedeným z nativních znaků typu char.

Poznámky

První členová funkce vrátí do_widen(byte). Druhá členová funkce vrátí do_widen(first, last, dest).

Příklad

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

Viz také

<locale>
Bezpečný přístup z více vláken ve standardní knihovně C++