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 Byte
zu 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 CharType zu 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_noconv
aufruft 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 umfasstN
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 CharType
Zeichen 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 in
aufruft 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 buf
und 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 length
aufruft 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 CharType
zu 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_length
aufruft 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 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 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::error
if state represents an invalid statecodecvt_base::noconv
, wenn die Funktion keine Konvertierung ausführtcodecvt_base::ok
wenn die Konvertierung erfolgreich istcodecvt_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 [ first2
gespeichert wird, last2
mit 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 unshift
aufruft 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ängenabfolgenN
umfasst.
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 Byte
dar.
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 CharType
dar.
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 CharType
zu erzeugen.
int max_length() const throw();
Rückgabewert
Die maximale Anzahl von Werten, die Byte
erforderlich sind, um eins CharType
zu 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 StateType
dar.
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 [ first2
gespeichert wird, last2
mit 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