codecvt::in

轉換 Byte的序列的外部的表示轉換成 CharType. 序列的內部表示。

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

參數

  • _State
    會維護對成員函式的呼叫之間的轉換狀態。

  • _First1
    要轉換的序列開頭的指標。

  • _Last1
    要轉換的序列結尾的指標。

  • _Next1
    在轉換的序列結尾的指標第一個未轉換的字元。

  • _First2
    要進行轉換的序列開頭的指標。

  • _Last2
    要進行轉換的序列結尾的指標。

  • _Next2
    在最後一個轉換的 Chartype 晚至目的序列中的第一個未變更的字元。 CharType 的指標。

傳回值

表示成功、部分作業成功或失敗的傳回。函式會傳回:

  • codecvt_base::error ,如果來源序列格式不正確。

  • codecvt_base::noconv ;如果此函式不會執行轉換。

  • codecvt_base::ok ,如果轉換成功。

  • codecvt_base::partial ,如果來源不夠,或者目的不夠大為了轉換才會成功。

備註

_State 必須在新的來源序列開頭表示初始轉換狀態。函式修改其儲存的值,如有需要,反映已成功轉換的目前狀態。在部分轉換之後,也就是說,當新字元到達時,必須將 _State 以便允許轉換還原。

成員函式傳回 do_in(_State, _First1*、_Last1、_Next1、First2、_Llast2, _Next2*)。

範例

// 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);
}
  
  

需求

標題: <locale>

命名空間: std

請參閱

參考

codecvt Class