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

要求

页眉: <区域设置>

命名空间: std

请参见

参考

codecvt 类