转换 Byte按顺序的外部表示为 CharTypes.序列的内部表示形式。
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