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_noconv
elementu , 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ściN
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 in
elementu , 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 buf
i 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 length
elementu , 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 CharType
elementu .
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_length
elementu , 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 CharType
elementu 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
elementu 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::error
jeśli stan reprezentuje nieprawidłowy stancodecvt_base::noconv
jeśli funkcja nie wykonuje konwersjicodecvt_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
, last2
z wyjątkiem elementu Byte
koń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 unshift
elementu , 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ściN
.
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 Byte
szablonu .
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 CharType
szablonu .
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 CharType
elementu .
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 StateType
szablonu .
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
, last2
z wyjątkiem elementu Byte
koń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++