Freigeben über


codecvt::in

Konvertiert eine externe Darstellung einer Sequenz von Bytes zu einer internen Darstellung einer Sequenz von CharType. S

result in(
    StateType& _State,
    const Byte* _First1, 
    const Byte* _Last1, 
    const Byte*& _Next1,
    CharType* _First2,
    CharType* _Last2,
    CharType*& _Next2,
) const;

Parameter

  • _State
    Der Konvertierungszustand, zwischen Aufrufen zur Memberfunktion beibehalten wird.

  • _First1
    Zeiger zum Anfang der zu konvertierende Sequenz.

  • _Last1
    Zeiger zum Ende der zu konvertierende Sequenz.

  • _Next1
    Zeiger zum Ende der konvertierten Sequenz nicht konvertierten zum ersten Zeichen sind.

  • _First2
    Zeiger zum Anfang der konvertierten Sequenz.

  • _Last2
    Zeiger zum Ende der konvertierten Sequenz.

  • _Next2
    Zeiger auf CharType, der nach letzten konvertierten Chartype zur ersten unveränderten Zeichen in der Zielsequenz stammt.

Rückgabewert

Durch Rückgabe, die den Erfolg, partiellem Erfolg oder Fehlschlagen des Vorgangs angibt. Die Funktion:

  • codecvt_base::error, wenn die Quellsequenz nicht ordnungsgemäß formatiert ist.

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

  • codecvt_base::ok, wenn die Konvertierung erfolgreich ausgeführt.

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

Hinweise

_State muss die ursprünglichen Konvertierungszustand zu Beginn einer neuer Quellsequenz darstellen. Die Funktion ändert den gespeicherten Wert ggf. um den aktuellen Zustand einer erfolgreichen Konvertierung wiederzugeben. Nach einer partiellen Konvertierung muss _State festgelegt werden, um die Konvertierung zu ermöglichen, um fortzusetzen, wenn neue Zeichen erhält.

Die Memberfunktion gibt do_in zurück (_State, _First1*, _Last1, _Next1, First2, _Llast2, _Next2*).

Beispiel

// codecvt_in.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
using namespace std;
#define LEN 90
int main( )   
{
   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};
   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"]" << endl;
   exit(-1);
}
       

Anforderungen

Gebietsschema Header: <>

Namespace: std

Siehe auch

Referenz

codecvt-Klasse