Udostępnij za pośrednictwem


codecvt Klasa

Szablon klasy opisujący obiekt, który może służyć jako aspekt ustawień regionalnych. Może kontrolować konwersje między sekwencją wartości używanych do kodowania znaków w programie i sekwencji wartości używanych do kodowania znaków poza programem.

Składnia

template <class CharType, class Byte, class StateType>
class codecvt : public locale::facet, codecvt_base;

Parametry

CharType
Typ używany w programie do kodowania znaków.

Byte
Typ używany do kodowania znaków poza programem.

StateType
Typ, który może służyć do reprezentowania pośrednich stanów konwersji między typami wewnętrznymi i zewnętrznymi reprezentacji znaków.

Uwagi

Szablon klasy opisuje obiekt, który może służyć jako aspekt ustawień regionalnych, do kontrolowania konwersji między sekwencją wartości typu CharType a sekwencją wartości typu Byte. Klasa StateType charakteryzuje transformację — i obiekt klasy StateType przechowuje wszelkie niezbędne informacje o stanie podczas konwersji.

Kodowanie wewnętrzne używa reprezentacji z stałą liczbą bajtów na znak, zazwyczaj typ char lub typ wchar_t.

Podobnie jak w przypadku dowolnego aspektu ustawień regionalnych obiekt id statyczny ma początkową przechowywaną wartość zero. Pierwsza próba uzyskania dostępu do przechowywanej wartości przechowuje unikatową wartość dodatnią w pliku id.

Wersje szablonu i do_in do_out zawsze zwracają wartość codecvt_base::noconv.

Biblioteka Standardowa języka C++ definiuje kilka jawnych specjalizacji:

template<>
codecvt<wchar_t, char, mbstate_t>

konwertuje sekwencje między wchar_t i char .

template<>
codecvt<char16_t, char, mbstate_t>

Konwertuje sekwencje char16_t zakodowane jako UTF-16 i char sekwencje zakodowane jako UTF-8.

template<>
codecvt<char32_t, char, mbstate_t>

Konwertuje sekwencje char32_t zakodowane jako UTF-32 (UCS-4) i char sekwencje zakodowane jako UTF-8.

Konstruktory

Konstruktor opis
codecvt Konstruktor dla obiektów klasy codecvt , która służy jako aspekt ustawień regionalnych do obsługi konwersji.

Typedefs

Nazwa typu opis
extern_type Typ znaku, który jest używany dla zewnętrznych reprezentacji.
intern_type Typ znaku, który jest używany dla wewnętrznych reprezentacji.
state_type Typ znaku, który jest używany do reprezentowania pośrednich stanów w czasie konwersji między wewnętrznymi i zewnętrznymi reprezentacjami.

Funkcje składowe

Funkcja składowa opis
always_noconv Sprawdza, czy nie trzeba wykonać żadnych konwersji.
do_always_noconv Funkcja wirtualna wywoływana w celu sprawdzenia, czy nie trzeba wykonywać żadnych konwersji.
do_encoding Funkcja wirtualna, która sprawdza, czy kodowanie Byte strumienia jest zależne od stanu, czy stosunek Byte wartości użytych do CharType wartości jest stały, a jeśli tak, określa wartość tego współczynnika.
do_in Funkcja wirtualna wywoływana w celu przekonwertowania sekwencji wartości wewnętrznych Byte na sekwencję wartości zewnętrznych CharType .
do_length Funkcja wirtualna określająca, Byte ile wartości z danej sekwencji wartości zewnętrznych Byte generuje nie więcej niż dana liczba wartości wewnętrznych CharType i zwraca tę liczbę Byte wartości.
do_max_length Funkcja wirtualna zwracająca maksymalną liczbę bajtów zewnętrznych niezbędnych do utworzenia jednego wewnętrznego CharType.
do_out Funkcja wirtualna wywoływana w celu przekonwertowania sekwencji wartości wewnętrznych CharType na sekwencję bajtów zewnętrznych.
do_unshift Funkcja wirtualna wywoływana w celu zapewnienia Byte wartości wymaganych w konwersji zależnej od stanu w celu ukończenia ostatniego Byte znaku w sekwencji wartości.
encoding Sprawdza, czy kodowanie Byte strumienia jest zależne od stanu, czy stosunek Byte wartości użytych do CharType wartości jest stały, a jeśli tak, określa wartość tego współczynnika.
in Konwertuje zewnętrzną reprezentację sekwencji wartości na wewnętrzną reprezentację sekwencji Byte CharType wartości.
length Określa, Byte ile wartości z danej sekwencji wartości zewnętrznych Byte generuje nie więcej niż dana liczba wartości wewnętrznych CharType i zwraca daną liczbę Byte wartości.
max_length Zwraca maksymalną liczbę wartości zewnętrznych Byte niezbędnych do utworzenia jednego wewnętrznego CharType.
out Konwertuje sekwencję wartości wewnętrznych CharType na sekwencję wartości zewnętrznych Byte .
unshift Udostępnia wartości zewnętrzne Byte wymagane w konwersji zależnej od stanu, aby zakończyć ostatni znak w sekwencji Byte wartości.

Wymagania

Nagłówek: <locale>

Przestrzeń nazw: std

codecvt::always_noconv

Sprawdza, czy nie trzeba wykonywać żadnych konwersji.

bool always_noconv() const throw();

Wartość zwracana

Wartość logiczna, która jest true taka, jeśli nie trzeba wykonać żadnych konwersji; false jeśli trzeba wykonać co najmniej jedną z nich.

Uwagi

Funkcja składowa zwraca wartość do_always_noconv.

Przykład

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

int main( )
{
   locale loc ( "German_Germany" );
   bool result1 = use_facet<codecvt<char, char, mbstate_t>>
      ( loc ).always_noconv( );

   if ( result1 )
      cout << "No conversion is needed." << '\n';
   else
      cout << "At least one conversion is required." << '\n';

   bool result2 = use_facet<codecvt<wchar_t, char, mbstate_t>>
      ( loc ).always_noconv( );

   if ( result2 )
      cout << "No conversion is needed." << '\n';
   else
      cout << "At least one conversion is required." << '\n';
}
No conversion is needed.
At least one conversion is required.

codecvt::codecvt

Konstruktor obiektów codecvt klasy, który służy jako aspekt ustawień regionalnych do obsługi konwersji.

explicit codecvt(size_t refs = 0);

Parametry

refs
Wartość całkowita używana do określania typu zarządzania pamięcią dla obiektu.

Uwagi

Możliwe wartości parametru refs i ich istotności to:

  • 0: Okres istnienia obiektu jest zarządzany przez ustawienia regionalne, które go zawierają.

  • 1: Okres istnienia obiektu musi być zarządzany ręcznie.

  • 2: Te wartości nie są zdefiniowane.

Konstruktor inicjuje swój locale::facet obiekt podstawowy za pomocą locale::facet(refs)polecenia .

codecvt::do_always_noconv

Funkcja wirtualna wywoływana w celu sprawdzenia, czy nie trzeba wykonywać żadnych konwersji.

virtual bool do_always_noconv() const throw();

Wartość zwracana

Chroniona funkcja wirtualnego elementu członkowskiego zwraca true tylko wtedy, gdy każde wywołanie funkcji do_in lub do_out zwraca wartość noconv.

Wersja szablonu zawsze zwraca wartość true.

Przykład

Zobacz przykład dla always_noconvelementu , który wywołuje metodę do_always_noconv.

codecvt::do_encoding

Funkcja wirtualna, która sprawdza, czy kodowanie Byte strumienia jest zależne od stanu, czy stosunek Byte wartości użytych do CharType wartości jest stały, a jeśli tak, określa wartość tego współczynnika.

virtual int do_encoding() const throw();

Wartość zwracana

Funkcja chronionego wirtualnego elementu członkowskiego zwraca następujące elementy:

  • -1, jeśli kodowanie sekwencji typu extern_type jest zależne od stanu.

  • 0, jeśli kodowanie obejmuje sekwencje o różnych długościach.

  • N, jeśli kodowanie obejmuje tylko sekwencje długości N

Przykład

Zobacz przykład kodowania, który wywołuje metodę do_encoding.

codecvt::d o_in

Funkcja wirtualna wywoływana w celu przekonwertowania sekwencji wartości zewnętrznych Byte na sekwencję wartości wewnętrznych CharType .

virtual result do_in(
    StateType& state,
    const Byte* first1,
    const Byte* last1,
    const Byte*& next1,
    CharType* first2,
    CharType* last2,
    CharType*& next2,) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first1
Wskaźnik na początek sekwencji do przekonwertowania.

last1
Wskaźnik na końcu sekwencji, która ma zostać przekonwertowana.

next1
Wskaźnik poza końcem przekonwertowanej sekwencji na pierwszy niekonwertowany znak.

first2
Wskaźnik na początek przekonwertowanej sekwencji.

last2
Wskaźnik na końcu przekonwertowanej sekwencji.

next2
Wskaźnik do CharType elementu, który następuje po ostatniej konwersji CharType, na pierwszy niezmieniany znak w sekwencji docelowej.

Wartość zwracana

Zwrot wskazujący powodzenie, częściowe powodzenie lub niepowodzenie operacji. Funkcja zwraca następujące pracę:

  • codecvt_base::error jeśli sekwencja źródłowa jest źle sformułowana.

  • codecvt_base::noconv jeśli funkcja nie wykonuje konwersji.

  • codecvt_base::ok jeśli konwersja zakończy się pomyślnie.

  • codecvt_base::partial jeśli źródło jest niewystarczające lub miejsce docelowe nie jest wystarczająco duże, aby konwersja powiodła się.

Uwagi

state musi reprezentować stan konwersji początkowej na początku nowej sekwencji źródłowej. Funkcja zmienia przechowywaną wartość zgodnie z potrzebami, aby odzwierciedlić bieżący stan pomyślnej konwersji. Jego przechowywana wartość jest w przeciwnym razie nieokreślona.

Przykład

Zobacz przykład dla inelementu , który wywołuje metodę do_in.

codecvt::do_length

Funkcja wirtualna określająca, Byte ile wartości z danej sekwencji wartości zewnętrznych Byte generuje nie więcej niż dana liczba wartości wewnętrznych CharType i zwraca tę liczbę Byte wartości.

virtual int do_length(
    const StateType& state,
    const Byte* first1,
    const Byte* last1,
    size_t len2) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first1
Wskaźnik na początek sekwencji zewnętrznej.

last1
Wskaźnik na końcu sekwencji zewnętrznej.

len2
Maksymalna liczba Byte wartości, które mogą być zwracane przez funkcję składową.

Wartość zwracana

Liczba całkowita, która reprezentuje liczbę maksymalnej liczby konwersji, nie większej niż len2, zdefiniowanej przez zewnętrzną sekwencję źródłową w lokalizacji [ first1, last1).

Uwagi

Chroniona funkcja wirtualna elementu członkowskiego skutecznie wywołuje do_in( state, first1, last1, next1, buf, buf + len2, next2) stan (kopię stanu), niektóre bufi wskaźniki next1 i .next2

Następnie zwraca wartość next2 - buf. Zlicza maksymalną liczbę konwersji, nie większą niż len2, zdefiniowaną przez sekwencję źródłową [ first1, last1).

Wersja szablonu zawsze zwraca mniejsze wartości last1 - first1 i .len2

Przykład

Zobacz przykład dla lengthelementu , który wywołuje metodę do_length.

codecvt::do_max_length

Funkcja wirtualna zwracająca maksymalną liczbę wartości zewnętrznych Byte niezbędnych do utworzenia jednego wewnętrznego CharType.

virtual int do_max_length() const throw();

Wartość zwracana

Maksymalna liczba wartości niezbędnych do utworzenia Byte jednego CharTypeelementu .

Uwagi

Funkcja chronionego wirtualnego elementu członkowskiego zwraca największą dozwoloną wartość, która może być zwracana przez do_length( first1, last1, 1) dowolne prawidłowe wartości first1 i last1.

Przykład

Zobacz przykład dla max_lengthelementu , który wywołuje metodę do_max_length.

codecvt::do_out

Funkcja wirtualna wywoływana w celu przekonwertowania sekwencji wartości wewnętrznych CharType na sekwencję wartości zewnętrznych Byte .

virtual result do_out(
    StateType& state,
    const CharType* first1,
    const CharType* last1,
    const CharType*& next1,
    Byte* first2,
    Byte* last2,
    Byte*& next2) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first1
Wskaźnik na początek sekwencji do przekonwertowania.

last1
Wskaźnik na końcu sekwencji, która ma zostać przekonwertowana.

next1
Odwołanie do wskaźnika do pierwszego niekonwertowanego CharTypeelementu po ostatniej CharType konwersji.

first2
Wskaźnik na początek przekonwertowanej sekwencji.

last2
Wskaźnik na końcu przekonwertowanej sekwencji.

next2
Odwołanie do wskaźnika do pierwszego niekonwertowanego Byteelementu po ostatniej Byte konwersji.

Wartość zwracana

Funkcja zwraca następujące pracę:

  • codecvt_base::error jeśli sekwencja źródłowa jest źle sformułowana.

  • codecvt_base::noconv jeśli funkcja nie wykonuje konwersji.

  • codecvt_base::ok jeśli konwersja zakończy się pomyślnie.

  • codecvt_base::partial jeśli źródło jest niewystarczające lub miejsce docelowe nie jest wystarczająco duże, aby konwersja powiodła się.

Uwagi

state musi reprezentować stan konwersji początkowej na początku nowej sekwencji źródłowej. Funkcja zmienia przechowywaną wartość zgodnie z potrzebami, aby odzwierciedlić bieżący stan pomyślnej konwersji. Jego przechowywana wartość jest w przeciwnym razie nieokreślona.

Przykład

Zobacz przykład dla elementu out, który wywołuje metodę do_out.

codecvt::do_unshift

Funkcja wirtualna wywoływana w celu zapewnienia Byte wartości wymaganych w konwersji zależnej od stanu w celu ukończenia ostatniego Byte znaku w sekwencji wartości.

virtual result do_unshift(
    StateType& state,
    Byte* first2,
    Byte* last2,
    Byte*& next2) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first2
Wskaźnik do pierwszej pozycji w zakresie docelowym.

last2
Wskaźnik do ostatniej pozycji w zakresie docelowym.

next2
Wskaźnik do pierwszego niezmienianego elementu w sekwencji docelowej.

Wartość zwracana

Funkcja zwraca następujące pracę:

  • codecvt_base::errorjeśli stan reprezentuje nieprawidłowy stan

  • codecvt_base::noconv jeśli funkcja nie wykonuje konwersji

  • codecvt_base::ok jeśli konwersja powiedzie się

  • codecvt_base::partial jeśli miejsce docelowe nie jest wystarczająco duże, aby konwersja powiodła się

Uwagi

Chroniona funkcja wirtualnego elementu członkowskiego próbuje przekonwertować element CharTypeźródłowy (0) na sekwencję docelową przechowywaną w obrębie [ first2, last2z wyjątkiem elementu Bytekończącego (0). Zawsze przechowuje w next2 wskaźniku pierwszy niezmieniany element w sekwencji docelowej.

State musi reprezentować stan konwersji początkowej na początku nowej sekwencji źródłowej. Funkcja zmienia przechowywaną wartość zgodnie z potrzebami, aby odzwierciedlić bieżący stan pomyślnej konwersji. Zazwyczaj konwertowanie elementu CharTypeźródłowego (0) pozostawia bieżący stan w stanie początkowej konwersji.

Przykład

Zobacz przykład dla unshiftelementu , który wywołuje metodę do_unshift.

codecvt::encoding

Sprawdza, czy kodowanie Byte strumienia jest zależne od stanu, czy stosunek Byte wartości użytych do CharType wartości jest stały, a jeśli tak, określa wartość tego współczynnika.

int encoding() const throw();

Wartość zwracana

Jeśli wartość zwracana jest dodatnia, ta wartość jest stałą liczbą Byte znaków wymaganych do utworzenia CharType znaku.

Funkcja chronionego wirtualnego elementu członkowskiego zwraca następujące elementy:

  • -1, jeśli kodowanie sekwencji typu extern_type jest zależne od stanu.

  • 0, jeśli kodowanie obejmuje sekwencje o różnych długościach.

  • N, jeśli kodowanie obejmuje tylko sekwencje długości N.

Uwagi

Funkcja składowa zwraca do_encoding.

Przykład

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

int main( )
{
   locale loc ( "German_Germany" );
   int result1 = use_facet<codecvt<char, char, mbstate_t>> ( loc ).encoding ( );
   cout << result1 << '\n';
   result1 = use_facet<codecvt<wchar_t, char, mbstate_t>> ( loc ).encoding( );
   cout << result1 << '\n';
   result1 = use_facet<codecvt<char, wchar_t, mbstate_t>> ( loc ).encoding( );
   cout << result1 << '\n';
}
1
1
1

codecvt::extern_type

Typ znaku, który jest używany dla zewnętrznych reprezentacji.

typedef Byte extern_type;

Uwagi

Typ jest synonimem parametru Byteszablonu .

codecvt::in

Konwertuje zewnętrzną reprezentację sekwencji wartości na wewnętrzną reprezentację sekwencji Byte CharType wartości.

result in(
    StateType& state,
    const Byte* first1,
    const Byte* last1,
    const Byte*& next1,
    CharType* first2,
    CharType* last2,
    CharType*& next2,) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first1
Wskaźnik na początek sekwencji do przekonwertowania.

last1
Wskaźnik na końcu sekwencji, która ma zostać przekonwertowana.

next1
Wskaźnik poza końcem przekonwertowanej sekwencji na pierwszy niekonwertowany znak.

first2
Wskaźnik na początek przekonwertowanej sekwencji.

last2
Wskaźnik na końcu przekonwertowanej sekwencji.

next2
Wskaźnik do CharType tego, który następuje po ostatnim przekonwertowaniu na pierwszy niezmieniany Chartype znak w sekwencji docelowej.

Wartość zwracana

Zwrot wskazujący powodzenie, częściowe powodzenie lub niepowodzenie operacji. Funkcja zwraca następujące pracę:

  • codecvt_base::error jeśli sekwencja źródłowa jest źle sformułowana.

  • codecvt_base::noconv jeśli funkcja nie wykonuje konwersji.

  • codecvt_base::ok jeśli konwersja zakończy się pomyślnie.

  • codecvt_base::partial jeśli źródło jest niewystarczające lub miejsce docelowe nie jest wystarczająco duże, aby konwersja powiodła się.

Uwagi

state musi reprezentować stan konwersji początkowej na początku nowej sekwencji źródłowej. Funkcja zmienia jego przechowywaną wartość, zgodnie z potrzebami, aby odzwierciedlić bieżący stan pomyślnej konwersji. Po częściowej konwersji należy ustawić tak, state aby umożliwić wznowienie konwersji po nadejściu nowych znaków.

Funkcja składowa zwraca wartość do_in( state, first1, last1, next1, first2, last2, next2).

Przykład

// codecvt_in.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
using namespace std;
#define LEN 90
int main( )
{
   const char* pszExt = "This is the string to be converted!";
   wchar_t pwszInt [LEN+1];
   memset(&pwszInt[0], 0, (sizeof(wchar_t))*(LEN+1));
   const char* pszNext;
   wchar_t* pwszNext;
   mbstate_t state = {0}; // zero-initialization represents the initial conversion state for mbstate_t
   locale loc("C");//English_Britain");//German_Germany
   int res = use_facet<codecvt<wchar_t, char, mbstate_t>>
     ( loc ).in( state,
          pszExt, &pszExt[strlen(pszExt)], pszNext,
          pwszInt, &pwszInt[strlen(pszExt)], pwszNext );
   pwszInt[strlen(pszExt)] = 0;
   wcout << ( res!=codecvt_base::error ?  L"It worked! " : L"It didn't work! " )
       << L"The converted string is:\n ["
       << &pwszInt[0]
       << L"]" << '\n';
   exit(-1);
}
It worked! The converted string is:
[This is the string to be converted!]

codecvt::intern_type

Typ znaku, który jest używany dla wewnętrznych reprezentacji.

typedef CharType intern_type;

Uwagi

Typ jest synonimem parametru CharTypeszablonu .

codecvt::length

Określa, Byte ile wartości z danej sekwencji wartości zewnętrznych Byte generuje nie więcej niż dana liczba wartości wewnętrznych CharType i zwraca daną liczbę Byte wartości.

int length(
    const StateType& state,
    const Byte* first1,
    const Byte* last1,
    size_t len2) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first1
Wskaźnik na początek sekwencji zewnętrznej.

last1
Wskaźnik na końcu sekwencji zewnętrznej.

len2
Maksymalna liczba bajtów, które mogą być zwracane przez funkcję składową.

Wartość zwracana

Liczba całkowita reprezentująca liczbę maksymalnej liczby konwersji, a nie większą niż len2, zdefiniowaną przez zewnętrzną sekwencję źródłową w lokalizacji [ first1, last1).

Uwagi

Funkcja składowa zwraca wartość do_length( state, first1, last1, len2).

Przykład

// codecvt_length.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
using namespace std;
#define LEN 90
int main( )
{
   const char* pszExt = "This is the string whose length is to be measured!";
   mbstate_t state = {0}; // zero-initialization represents the initial conversion state for mbstate_t
   locale loc("C"); // English_Britain"); //German_Germany
   int res = use_facet<codecvt<wchar_t, char, mbstate_t>>
     ( loc ).length( state,
          pszExt, &pszExt[strlen(pszExt)], LEN );
   cout << "The length of the string is: ";
   wcout << res;
   cout << "." << '\n';
   exit(-1);
}
The length of the string is: 50.

codecvt::max_length

Zwraca maksymalną liczbę wartości zewnętrznych Byte niezbędnych do utworzenia jednego wewnętrznego CharType.

int max_length() const throw();

Wartość zwracana

Maksymalna liczba wartości niezbędnych do utworzenia Byte jednego CharTypeelementu .

Uwagi

Funkcja składowa zwraca wartość do_max_length.

Przykład

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

int main( )
{
   locale loc( "C");//English_Britain" );//German_Germany
   int res = use_facet<codecvt<char, char, mbstate_t>>
     ( loc ).max_length( );
   wcout << res << '\n';
}
1

codecvt::out

Konwertuje sekwencję wartości wewnętrznych CharType na sekwencję wartości zewnętrznych Byte .

result out(
    StateType& state,
    const CharType* first1,
    const CharType* last1,
    const CharType*& next1,
    Byte* first2,
    Byte* last2,
    Byte*& next2) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first1
Wskaźnik na początek sekwencji do przekonwertowania.

last1
Wskaźnik na końcu sekwencji, która ma zostać przekonwertowana.

next1
Odwołanie do wskaźnika do pierwszego niekonwertowanego CharType po ostatniej CharType konwersji.

first2
Wskaźnik na początek przekonwertowanej sekwencji.

last2
Wskaźnik na końcu przekonwertowanej sekwencji.

next2
Odwołanie do wskaźnika do pierwszego niekonwertowanego Byte po ostatniej konwersji Byte.

Wartość zwracana

Funkcja składowa zwraca wartość do_out( state, first1, last1, next1, first2, last2, next2).

Uwagi

Aby uzyskać więcej informacji, zobacz codecvt::do_out.

Przykład

// codecvt_out.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
#include <wchar.h>
using namespace std;
#define LEN 90
int main( )
{
    char pszExt[LEN + 1];
    const wchar_t* pwszInt = L"This is the wchar_t string to be converted.";
    memset(&pszExt[0], 0, (sizeof(char)) * (LEN + 1));
    char* pszNext;
    const wchar_t* pwszNext;
    mbstate_t state;
    locale loc("C");//English_Britain");//German_Germany
    int res = use_facet<codecvt<wchar_t, char, mbstate_t>>
        (loc).out(state,
            pwszInt, &pwszInt[wcslen(pwszInt)], pwszNext,
            pszExt, &pszExt[wcslen(pwszInt)], pszNext);
    pszExt[wcslen(pwszInt)] = 0;
    cout << (res != codecvt_base::error ? "It worked: " : "It didn't work: ")
        << "The converted string is:\n ["
        << &pszExt[0]
        << "]" << '\n';

}
It worked: The converted string is:
[This is the wchar_t string to be converted.]

codecvt::state_type

Typ znaku, który jest używany do reprezentowania pośrednich stanów w czasie konwersji między wewnętrznymi i zewnętrznymi reprezentacjami.

typedef StateType state_type;

Uwagi

Typ jest synonimem parametru StateTypeszablonu .

codecvt::unshift

Byte Udostępnia wartości wymagane w konwersji zależnej od stanu, aby zakończyć ostatni znak w sekwencji Byte wartości.

result unshift(
    StateType& state,
    Byte* first2,
    Byte* last2,
    Byte*& next2) const;

Parametry

state
Stan konwersji, który jest utrzymywany między wywołaniami funkcji składowej.

first2
Wskaźnik do pierwszej pozycji w zakresie docelowym.

last2
Wskaźnik do ostatniej pozycji w zakresie docelowym.

next2
Wskaźnik do pierwszego niezmienianego elementu w sekwencji docelowej.

Wartość zwracana

Funkcja zwraca następujące pracę:

  • codecvt_base::error jeśli stan reprezentuje nieprawidłowy stan.

  • codecvt_base::noconv jeśli funkcja nie wykonuje konwersji.

  • codecvt_base::ok jeśli konwersja zakończy się pomyślnie.

  • codecvt_base::partial jeśli miejsce docelowe nie jest wystarczająco duże, aby konwersja powiodła się.

Uwagi

Chroniona funkcja wirtualnego elementu członkowskiego próbuje przekonwertować element CharTypeźródłowy (0) na sekwencję docelową przechowywaną w obrębie [ first2, last2z wyjątkiem elementu Bytekończącego (0). Zawsze przechowuje w next2 wskaźniku pierwszy niezmieniany element w sekwencji docelowej.

state musi reprezentować stan konwersji początkowej na początku nowej sekwencji źródłowej. Funkcja zmienia jego przechowywaną wartość, zgodnie z potrzebami, aby odzwierciedlić bieżący stan pomyślnej konwersji. Zazwyczaj konwertowanie elementu CharTypeźródłowego (0) pozostawia bieżący stan w stanie początkowej konwersji.

Funkcja składowa zwraca wartość do_unshift( state, first2, last2, next2 ).

Zobacz też

<locale>
Strony kodowe
Nazwy ustawień regionalnych, języki i ciągi kraju/regionu
Bezpieczeństwo wątku w standardowej bibliotece C++