次の方法で共有


codecvt::in

CharType、. のシーケンスの内部形式に [byte]、のシーケンスの外部表現を変換します。

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
    コピー先のシーケンスの最初の文字に変換された後、最後の ChartypeCharType へのポインター。

戻り値

操作の成功、部分的な成功または失敗を示すを返します。関数の戻り値:

  • ソース シーケンスが不正な場合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