codecvt-Klasse

Eine Klassenvorlage, die ein Objekt beschreibt, das als Gebietsschema-Facet dienen kann. Sie kann Konvertierungen zwischen einer Abfolge von Werten steuern, die zum Codieren von Zeichen innerhalb des Programms und einer Abfolge von Werten verwendet werden, die zum Codieren von Zeichen außerhalb des Programms verwendet werden.

Syntax

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

Parameter

CharType
Der Typ, der innerhalb eines Programms verwendet wird, um Zeichen zu codieren.

Byte
Ein Typ, mit dem Zeichen außerhalb eines Programms codiert werden.

StateType
Ein Typ, der verwendet werden kann, um Zwischenzustände einer Konvertierung zwischen internen und externen Zeichendarstellungen darzustellen.

Hinweise

Die Klassenvorlage beschreibt ein Objekt, das als Gebietsschema-Facet dienen kann, um Konvertierungen zwischen einer Abfolge von Werten vom Typ CharType und einer Abfolge von Werten vom Typ Bytezu steuern. Die StateType-Klasse kennzeichnet die Transformation, und ein Objekt der StateType-Klasse speichert alle erforderlichen Zustandsinformationen während einer Konvertierung.

Die interne Codierung verwendet eine Darstellung mit einer festen Anzahl von Byte pro Zeichen, normalerweise entweder vom Typ char oder vom Typ wchar_t.

Wie bei jedem Gebietsschemafacet hat das statische Objekt id einen anfänglichen gespeicherten Wert von NULL. Beim ersten Versuch, auf den gespeicherten Wert zuzugreifen, wird ein eindeutiger positiver Wert in id gespeichert.

Die Vorlagenversionen von do_in und do_out geben immer zurück codecvt_base::noconv.

Die C++- Standardbibliothek definiert einige explizite Spezialisierungen:

template<>
codecvt<wchar_t, char, mbstate_t>

konvertiert wchar_t- und char-Sequenzen.

template<>
codecvt<char16_t, char, mbstate_t>

konvertiert char16_t-Sequenzen, die als UTF-16 codiert sind, und char-Sequenzen, die als UTF-8 codiert sind.

template<>
codecvt<char32_t, char, mbstate_t>

konvertiert char32_t-Sequenzen, die als UTF-32 (UCS-4) codiert sind, und char-Sequenzen, die als UTF-8 codiert sind.

Konstruktoren

Konstruktor Beschreibung
codecvt Der Konstruktor für Objekte der codecvt-Klasse, die als Gebietsschemafacet zur Behandlung von Konvertierungen dient.

TypeDefs

Typname Beschreibung
extern_type Ein Zeichentyp, der für externe Darstellungen verwendet wird.
intern_type Ein Zeichentyp, der für interne Darstellungen verwendet wird.
state_type Ein Zeichentyp, der verwendet wird, um Zwischenzustände bei Konvertierungen zwischen externen und internen Darstellungen darzustellen.

Memberfunktionen

Memberfunktion Beschreibung
always_noconv Testet, ob keine Konvertierungen ausgeführt werden müssen.
do_always_noconv Eine virtuelle Funktion, die aufgerufen wird, um zu testen, ob keine Konvertierungen ausgeführt werden müssen.
do_encoding Eine virtuelle Funktion, die testet, ob die Codierung des Byte Datenstroms abhängig ist, ob das Verhältnis zwischen den Byte verwendeten Werten und den CharType erzeugten Werten konstant ist, und bestimmt ggf. den Wert dieses Verhältnisses.
do_in Eine virtuelle Funktion, die aufgerufen wird, um eine Sequenz interner Byte Werte in eine Sequenz externer CharType Werte zu konvertieren.
do_length Eine virtuelle Funktion, die bestimmt, wie viele Byte Werte aus einer bestimmten Abfolge externer Byte Werte nicht mehr als eine bestimmte Anzahl interner CharType Werte erzeugen und diese Anzahl von Byte Werten zurückgibt.
do_max_length Eine virtuelle Funktion, die die maximale Anzahl externer Bytes zurückgibt, die erforderlich sind, um ein internes CharType-Objekt zu erzeugen.
do_out Eine virtuelle Funktion, die aufgerufen wird, um eine Sequenz interner CharType Werte in eine Sequenz externer Bytes zu konvertieren.
do_unshift Eine virtuelle Funktion, die aufgerufen wird, um die werte bereitzustellen, die Byte in einer zustandsabhängigen Konvertierung erforderlich sind, um das letzte Zeichen in einer Folge von Byte Werten abzuschließen.
encoding Testet, ob die Codierung des Byte Datenstroms abhängig ist, ob das Verhältnis zwischen den Byte verwendeten Werten und den CharType erzeugten Werten konstant ist, und bestimmt ggf. den Wert dieses Verhältnisses.
in Wandelt eine externe Darstellung einer Folge von Byte Werten in eine interne Darstellung einer Folge von CharType Werten um.
length Bestimmt, wie viele Byte Werte aus einer bestimmten Abfolge externer Byte Werte nicht mehr als eine bestimmte Anzahl interner CharType Werte erzeugen und diese Anzahl von Byte Werten zurückgibt.
max_length Gibt die maximale Anzahl externer Byte Werte zurück, die erforderlich sind, um eine interne CharTypezu erzeugen.
out Wandelt eine Sequenz interner CharType Werte in eine Abfolge externer Byte Werte um.
unshift Stellt die externen Byte Werte bereit, die in einer zustandsabhängigen Konvertierung erforderlich sind, um das letzte Zeichen in der Reihenfolge der Byte Werte abzuschließen.

Anforderungen

Header: <locale>

Namespace:std

codecvt::always_noconv

Testet, ob keine Konvertierungen durchgeführt werden müssen.

bool always_noconv() const throw();

Rückgabewert

Ein boolescher Wert, der lautet true , wenn keine Konvertierungen ausgeführt werden müssen; false wenn mindestens eine ausgeführt werden muss.

Hinweise

Die Memberfunktion gibt do_always_noconv zurück.

Beispiel

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

Der Konstruktor für Objekte der Klasse „codecvt“, die als Gebietsschemafacet zur Handhabung von Konvertierungen dient.

explicit codecvt(size_t refs = 0);

Parameter

refs
Integerwert, der zum Angeben des Speicherverwaltungstyps für das Objekt verwendet wird.

Hinweise

Mögliche Werte für den refs-Parameter und ihre Bedeutung:

  • 0: Die Lebensdauer des Objekts wird von den Gebietsschemas verwaltet, in denen es enthalten ist.

  • 1: Die Lebensdauer des Objekts muss manuell verwaltet werden.

  • 2: Diese Werte sind nicht definiert.

Der Konstruktor initialisiert sein locale::facet Basisobjekt mit locale::facet(refs).

codecvt::do_always_noconv

Eine virtuelle Funktion, die aufgerufen wird, um zu testen, ob keine Konvertierungen durchgeführt werden müssen.

virtual bool do_always_noconv() const throw();

Rückgabewert

Die geschützte virtuelle Memberfunktion gibt nur dann zurück true , wenn jeder Aufruf do_in oder do_out Rückgabewert zurückgegeben wird noconv.

Die Vorlagenversion gibt immer zurück true.

Beispiel

Sehen Sie sich das Beispiel an, das always_noconvaufruft do_always_noconv.

codecvt::do_encoding

Eine virtuelle Funktion, die testet, ob die Codierung des Byte Datenstroms abhängig ist, ob das Verhältnis zwischen den Byte verwendeten Werten und den CharType erzeugten Werten konstant ist und wenn ja, den Wert dieses Verhältnisses bestimmt.

virtual int do_encoding() const throw();

Rückgabewert

Die geschützte virtuelle Memberfunktion gibt Folgendes zurück:

  • -1, wenn die Codierung von Sequenzen vom Typ extern_type abhängig ist.

  • 0, wenn die Codierung Sequenzen von variabler Länge umfasst.

  • N, wenn die Codierung nur Längenabfolgen umfasst N

Beispiel

Siehe das Beispiel für encoding, mit dem do_encoding aufgerufen wird.

codecvt::d o_in

Eine virtuelle Funktion, die aufgerufen wird, um eine Sequenz externer Byte Werte in eine Sequenz interner CharType Werte zu konvertieren.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first1
Zeiger auf den Anfang der zu konvertierenden Sequenz.

last1
Zeiger auf das Ende der zu konvertierenden Sequenz.

next1
Zeiger hinter das Ende der konvertierten Sequenz auf das erste nicht konvertierte Zeichen.

first2
Zeiger auf den Anfang der konvertierten Sequenz.

last2
Zeiger auf das Ende der konvertierten Sequenz.

next2
Zeigen Sie auf das Element, das CharType nach dem letzten konvertierten CharTypeZeichen auf das erste unveränderte Zeichen in der Zielsequenz folgt.

Rückgabewert

Ein Rückgabewert, der den Erfolg, den teilweisen Erfolg oder das Fehlschlagen des Vorgangs angibt. Die Funktion gibt Folgendes zurück:

  • codecvt_base::error wenn die Quellsequenz unformiert ist.

  • codecvt_base::noconv, wenn die Funktion keine Konvertierung ausführt.

  • codecvt_base::ok wenn die Konvertierung erfolgreich ist.

  • codecvt_base::partial wenn die Quelle nicht ausreicht oder das Ziel nicht groß genug ist, damit die Konvertierung erfolgreich ausgeführt werden kann.

Hinweise

state muss den ursprünglichen Konvertierungszustand am Anfang einer neuen Quellsequenz darstellen. Die Funktion ändert bei Bedarf ihren gespeicherten Wert, um den aktuellen Zustand einer erfolgreichen Konvertierung widerzuspiegeln. Andernfalls ist der gespeicherte Wert unspezifiziert.

Beispiel

Sehen Sie sich das Beispiel an, das inaufruft do_in.

codecvt::do_length

Eine virtuelle Funktion, die bestimmt, wie viele Byte Werte aus einer bestimmten Abfolge externer Byte Werte nicht mehr als eine bestimmte Anzahl interner CharType Werte erzeugen und diese Anzahl von Byte Werten zurückgibt.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first1
Zeiger auf den Anfang der externen Sequenz.

last1
Zeiger auf das Ende der externen Sequenz.

len2
Die maximale Anzahl von Byte Werten, die von der Memberfunktion zurückgegeben werden können.

Rückgabewert

Eine ganze Zahl, die eine Anzahl der maximalen Anzahl von Konvertierungen darstellt, nicht größer als len2, definiert durch die externe Quellsequenz bei [ first1, last1).

Hinweise

Die geschützte virtuelle Memberfunktion ruft do_in( state, first1, last1, next1, buf, buf + len2, next2) effektiv den Zustand (eine Kopie des Zustands), einige Puffer bufund Zeiger und Zeiger auf next1 next2.

Dann wird next2 - buf zurückgegeben. Es zählt die maximale Anzahl von Konvertierungen, nicht größer als len2, definiert durch die Quellsequenz bei [ first1, last1).

Die Vorlagenversion gibt immer den geringeren von last1 - first1 und len2.

Beispiel

Sehen Sie sich das Beispiel an, das lengthaufruft do_length.

codecvt::do_max_length

Eine virtuelle Funktion, die die maximale Anzahl externer Byte Werte zurückgibt, die erforderlich sind, um eine interne CharType.

virtual int do_max_length() const throw();

Rückgabewert

Die maximale Anzahl von Werten, die Byte erforderlich sind, um eins CharTypezu erzeugen.

Hinweise

Die geschützte virtuelle Memberfunktion gibt den größten zulässigen Wert zurück, der für do_length( first1, last1, 1) beliebige gültige Werte first1 zurückgegeben werden kann.last1

Beispiel

Sehen Sie sich das Beispiel an, das max_lengthaufruft do_max_length.

codecvt::do_out

Eine virtuelle Funktion, die aufgerufen wird, um eine Sequenz interner CharType Werte in eine Sequenz externer Byte Werte zu konvertieren.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first1
Zeiger auf den Anfang der zu konvertierenden Sequenz.

last1
Zeiger auf das Ende der zu konvertierenden Sequenz.

next1
Verweis auf einen Zeiger auf den ersten nicht konvertierten CharTypeZeiger nach der letzten CharType Konvertierten.

first2
Zeiger auf den Anfang der konvertierten Sequenz.

last2
Zeiger auf das Ende der konvertierten Sequenz.

next2
Verweis auf einen Zeiger auf den ersten nicht konvertierten ByteZeiger nach der letzten Byte Konvertierten.

Rückgabewert

Die Funktion gibt Folgendes zurück:

  • codecvt_base::error wenn die Quellsequenz unformiert ist.

  • codecvt_base::noconv, wenn die Funktion keine Konvertierung ausführt.

  • codecvt_base::ok wenn die Konvertierung erfolgreich ist.

  • codecvt_base::partial wenn die Quelle nicht ausreicht oder das Ziel nicht groß genug ist, damit die Konvertierung erfolgreich ausgeführt werden kann.

Hinweise

state muss den ursprünglichen Konvertierungszustand am Anfang einer neuen Quellsequenz darstellen. Die Funktion ändert bei Bedarf ihren gespeicherten Wert, um den aktuellen Zustand einer erfolgreichen Konvertierung widerzuspiegeln. Andernfalls ist der gespeicherte Wert unspezifiziert.

Beispiel

Siehe das Beispiel für out, mit dem do_out aufgerufen wird.

codecvt::do_unshift

Eine virtuelle Funktion, die aufgerufen wird, um die werte bereitzustellen, die Byte in einer zustandsabhängigen Konvertierung erforderlich sind, um das letzte Zeichen in einer Folge von Byte Werten abzuschließen.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first2
Zeiger auf die erste Position im Zielbereich.

last2
Zeiger auf die letzte Position im Zielbereich.

next2
Zeiger auf das erste unveränderte Element in der Zielsequenz.

Rückgabewert

Die Funktion gibt Folgendes zurück:

  • codecvt_base::errorif state represents an invalid state

  • codecvt_base::noconv, wenn die Funktion keine Konvertierung ausführt

  • codecvt_base::ok wenn die Konvertierung erfolgreich ist

  • codecvt_base::partial wenn das Ziel nicht groß genug ist, damit die Konvertierung erfolgreich ist

Hinweise

Die geschützte virtuelle Memberfunktion versucht, das Quellelement CharType(0) in eine Zielsequenz zu konvertieren, die in [ first2gespeichert wird, last2mit Ausnahme des Endelements Byte(0). Sie speichert in next2 stets einen Zeiger auf das erste unveränderte Element in der Zielsequenz.

State muss den ursprünglichen Konvertierungszustand am Anfang einer neuen Quellsequenz darstellen. Die Funktion ändert bei Bedarf ihren gespeicherten Wert, um den aktuellen Zustand einer erfolgreichen Konvertierung widerzuspiegeln. In der Regel bleibt beim Konvertieren des Quellelements CharType(0) der aktuelle Zustand im anfänglichen Konvertierungszustand.

Beispiel

Sehen Sie sich das Beispiel an, das unshiftaufruft do_unshift.

codecvt::encoding

Testet, ob die Codierung des Byte Datenstroms abhängig ist, ob das Verhältnis zwischen den Byte verwendeten Werten und den CharType erzeugten Werten konstant ist, und bestimmt ggf. den Wert dieses Verhältnisses.

int encoding() const throw();

Rückgabewert

Wenn der Rückgabewert positiv ist, ist dieser Wert die konstante Anzahl von Byte Zeichen, die zum Erzeugen des CharType Zeichens erforderlich sind.

Die geschützte virtuelle Memberfunktion gibt Folgendes zurück:

  • -1, wenn die Codierung von Sequenzen vom Typ extern_type abhängig ist.

  • 0, wenn die Codierung Sequenzen von variabler Länge umfasst.

  • N, wenn die Codierung nur Längenabfolgen Numfasst.

Hinweise

Die Memberfunktion gibt do_encoding zurück.

Beispiel

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

Ein Zeichentyp, der für externe Darstellungen verwendet wird.

typedef Byte extern_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter Bytedar.

codecvt::in

Wandelt eine externe Darstellung einer Folge von Byte Werten in eine interne Darstellung einer Folge von CharType Werten um.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first1
Zeiger auf den Anfang der zu konvertierenden Sequenz.

last1
Zeiger auf das Ende der zu konvertierenden Sequenz.

next1
Zeiger hinter das Ende der konvertierten Sequenz auf das erste nicht konvertierte Zeichen.

first2
Zeiger auf den Anfang der konvertierten Sequenz.

last2
Zeiger auf das Ende der konvertierten Sequenz.

next2
Zeigen Sie auf das CharType Element, das nach der letzten Konvertierung in das erste unveränderte Zeichen in der Zielsequenz konvertiert Chartype wurde.

Rückgabewert

Ein Rückgabewert, der den Erfolg, den teilweisen Erfolg oder das Fehlschlagen des Vorgangs angibt. Die Funktion gibt Folgendes zurück:

  • codecvt_base::error wenn die Quellsequenz unformiert ist.

  • codecvt_base::noconv, wenn die Funktion keine Konvertierung ausführt.

  • codecvt_base::ok wenn die Konvertierung erfolgreich ist.

  • codecvt_base::partial wenn die Quelle nicht ausreicht oder das Ziel nicht groß genug ist, damit die Konvertierung erfolgreich ausgeführt werden kann.

Hinweise

state muss den ursprünglichen Konvertierungszustand am Anfang einer neuen Quellsequenz darstellen. Die Funktion ändert bei Bedarf ihren gespeicherten Wert, um den aktuellen Zustand einer erfolgreichen Konvertierung widerzuspiegeln. Nach einer teilweisen Konvertierung muss state so festgelegt werden, dass die Konvertierung beim Eintreffen neuer Zeichen fortgesetzt werden kann.

Die Memberfunktion gibt do_in( state, first1, last1, next1, first2, last2, next2) zurück.

Beispiel

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

Ein Zeichentyp, der für interne Darstellungen verwendet wird.

typedef CharType intern_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter CharTypedar.

codecvt::length

Bestimmt, wie viele Byte Werte aus einer bestimmten Abfolge externer Byte Werte nicht mehr als eine bestimmte Anzahl interner CharType Werte erzeugen und diese Anzahl von Byte Werten zurückgibt.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first1
Zeiger auf den Anfang der externen Sequenz.

last1
Zeiger auf das Ende der externen Sequenz.

len2
Die maximale Anzahl von Bytes, die von der Memberfunktion zurückgegeben werden kann.

Rückgabewert

Eine ganze Zahl, die einen Zähler der maximalen Zahl von Konvertierungen darstellt. Sie ist nicht größer als len2 und wird durch die Sequenz der externen Quelle an [ first1, last1) definiert.

Hinweise

Die Memberfunktion gibt do_length( state, first1, last1, len2) zurück.

Beispiel

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

Gibt die maximale Anzahl externer Byte Werte zurück, die erforderlich sind, um eine interne CharTypezu erzeugen.

int max_length() const throw();

Rückgabewert

Die maximale Anzahl von Werten, die Byte erforderlich sind, um eins CharTypezu erzeugen.

Hinweise

Die Memberfunktion gibt do_max_length zurück.

Beispiel

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

Wandelt eine Sequenz interner CharType Werte in eine Abfolge externer Byte Werte um.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first1
Zeiger auf den Anfang der zu konvertierenden Sequenz.

last1
Zeiger auf das Ende der zu konvertierenden Sequenz.

next1
Verweisen auf einen Zeiger auf den ersten nicht konvertierten CharType Zeiger nach der letzten CharType Konvertierten.

first2
Zeiger auf den Anfang der konvertierten Sequenz.

last2
Zeiger auf das Ende der konvertierten Sequenz.

next2
Verweis auf einen Zeiger auf den ersten nicht konvertierten Byte Zeiger nach dem letzten konvertierten Byte.

Rückgabewert

Die Memberfunktion gibt do_out( state, first1, last1, next1, first2, last2, next2) zurück.

Hinweise

Weitere Informationen finden Sie unter codecvt::do_out.

Beispiel

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

Ein Zeichentyp, der verwendet wird, um Zwischenzustände bei Konvertierungen zwischen externen und internen Darstellungen darzustellen.

typedef StateType state_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter StateTypedar.

codecvt::unshift

Stellt die Werte bereit, die Byte in einer zustandsabhängigen Konvertierung erforderlich sind, um das letzte Zeichen in einer Folge von Byte Werten abzuschließen.

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

Parameter

state
Der Konvertierungszustand, der zwischen den Aufrufen der Memberfunktion beibehalten wird.

first2
Zeiger auf die erste Position im Zielbereich.

last2
Zeiger auf die letzte Position im Zielbereich.

next2
Zeiger auf das erste unveränderte Element in der Zielsequenz.

Rückgabewert

Die Funktion gibt Folgendes zurück:

  • codecvt_base::error if state represents an invalid state.

  • codecvt_base::noconv, wenn die Funktion keine Konvertierung ausführt.

  • codecvt_base::ok wenn die Konvertierung erfolgreich ist.

  • codecvt_base::partial wenn das Ziel nicht groß genug ist, damit die Konvertierung erfolgreich ausgeführt werden kann.

Hinweise

Die geschützte virtuelle Memberfunktion versucht, das Quellelement CharType(0) in eine Zielsequenz zu konvertieren, die in [ first2gespeichert wird, last2mit Ausnahme des Endelements Byte(0). Sie speichert in next2 stets einen Zeiger auf das erste unveränderte Element in der Zielsequenz.

state muss den ursprünglichen Konvertierungszustand am Anfang einer neuen Quellsequenz darstellen. Die Funktion ändert bei Bedarf ihren gespeicherten Wert, um den aktuellen Zustand einer erfolgreichen Konvertierung widerzuspiegeln. In der Regel bleibt beim Konvertieren des Quellelements CharType(0) der aktuelle Zustand im anfänglichen Konvertierungszustand.

Die Memberfunktion gibt do_unshift( state, first2, last2, next2 ) zurück.

Siehe auch

<locale>
Codepages
Gebietsschema-Namen, Sprachen und Zeichenfolgen für Länder und Regionen
Threadsicherheit in der C++-Standardbibliothek