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