codecvt
수업
로캘 패싯으로 사용할 수 있는 개체를 설명하는 클래스 템플릿입니다. 프로그램 내에서 문자를 인코딩하는 데 사용되는 값 시퀀스와 프로그램 외부의 문자를 인코딩하는 데 사용되는 값 시퀀스 간의 변환을 제어할 수 있습니다.
구문
template <class CharType, class Byte, class StateType>
class codecvt : public locale::facet, codecvt_base;
매개 변수
CharType
문자를 인코딩하기 위해 프로그램 내 사용하는 형식
Byte
프로그램 밖의 문자를 인코딩하는 데 사용되는 형식입니다.
StateType
내부 및 외부 문자 표현 형식 사이의 변환의 중간 상태를 나타내는 데 사용할 수 있는 형식입니다.
설명
클래스 템플릿은 형식 값 시퀀스와 형식 CharType
값 시퀀스 Byte
간의 변환을 제어하기 위해 로캘 패싯으로 사용할 수 있는 개체를 설명합니다. 클래스 StateType
은 변환을 특성화하고 StateType
클래스의 개체는 변환 중 모든 상태 정보를 저장합니다.
내부 인코딩은 일반적으로 char
형식 또는 wchar_t
형식의 문자당 고정 바이트 수를 사용한 표현을 사용합니다.
모든 로캘 패싯과 마찬가지로, 고정 개체 id
에는 초기값 0이 저장되어 있습니다. 저장된 값에 액세스를 처음 시도하면 id
에 고유한 양수 값이 저장됩니다.
항상 반환codecvt_base::noconv
되는 템플릿 버전입니다.do_in
do_out
C++ 표준 라이브러리는 여러 명시적 특수화를 정의합니다.
template<>
codecvt<wchar_t, char, mbstate_t>
wchar_t
및 char
시퀀스 사이에서 변환합니다.
template<>
codecvt<char16_t, char, mbstate_t>
UTF-16으로 인코드된 char16_t
시퀀스와 UTF-8로 인코드된 char
시퀀스 사이에서 변환합니다.
template<>
codecvt<char32_t, char, mbstate_t>
UTF-32(UCS-4)로 인코드된 char32_t
시퀀스와 UTF-8로 인코드된 char
시퀀스 사이에서 변환합니다.
생성자
생성자 | Description |
---|---|
codecvt |
변환을 처리할 로캘 패싯으로 사용할 codecvt 클래스 개체의 생성자입니다. |
Typedef
형식 이름 | 설명 |
---|---|
extern_type |
외부 표현에 사용되는 문자 형식입니다. |
intern_type |
내부 표현에 사용되는 문자 형식입니다. |
state_type |
내부 및 외부 표현 사이의 변환 중간 상태를 나타내는 데 사용하는 문자 형식입니다. |
멤버 함수
멤버 함수 | 설명 |
---|---|
always_noconv |
변환을 수행해야 하는지 여부를 테스트합니다. |
do_always_noconv |
변환을 수행해야 하는지 여부를 테스트하기 위해 호출하는 가상 함수입니다. |
do_encoding |
스트림의 Byte 인코딩이 상태에 따라 달라지는지, 사용된 값과 생성된 값 간의 Byte 비율이 일정한지 여부를 테스트하는 CharType 가상 함수이며, 이 경우 해당 비율의 값을 결정합니다. |
do_in |
내부 Byte 값 시퀀스를 외부 CharType 값 시퀀스로 변환하기 위해 호출되는 가상 함수입니다. |
do_length |
지정된 외부 Byte 값 시퀀스의 값 수를 Byte 결정하여 지정된 수의 내부 CharType 값을 생성하고 해당 값 수를 Byte 반환하는 가상 함수입니다. |
do_max_length |
하나의 내부 CharType 을 만드는 데 필요한 외부 바이트의 최대 수를 반환하는 가상 함수입니다. |
do_out |
내부 CharType 값 시퀀스를 외부 바이트 시퀀스로 변환하기 위해 호출되는 가상 함수입니다. |
do_unshift |
값 시퀀스의 Byte 마지막 문자를 완료하기 위해 상태 종속 변환에 필요한 값을 제공하기 Byte 위해 호출된 가상 함수입니다. |
encoding |
스트림의 Byte 인코딩이 상태에 따라 달라지는지, 사용된 값과 CharType 생성된 값 간의 Byte 비율이 일정한지 여부를 테스트하고, 이 경우 해당 비율의 값을 결정합니다. |
in |
값 시퀀스의 외부 표현을 값 시퀀 CharType 스의 Byte 내부 표현으로 변환합니다. |
length |
Byte 지정된 외부 Byte 값 시퀀스의 값 수가 지정된 내부 CharType 값 수를 초과하지 않는지 확인하고 해당 값 수를 Byte 반환합니다. |
max_length |
하나의 내부 CharType 값을 생성하는 데 필요한 최대 외부 Byte 값 수를 반환합니다. |
out |
내부 CharType 값 시퀀스를 외부 Byte 값 시퀀스로 변환합니다. |
unshift |
값 시퀀스의 Byte 마지막 문자를 완료하기 위해 상태 종속 변환에 필요한 외부 Byte 값을 제공합니다. |
요구 사항
머리글: <locale>
네임스페이스: std
codecvt::always_noconv
변환을 수행할 필요가 없는지 테스트합니다.
bool always_noconv() const throw();
Return Value
변환을 수행할 필요가 없는 경우, 하나 이상의 작업을 수행해야 false
하는 경우의 부울 값입니다true
.
설명
멤버 함수는 do_always_noconv
를 반환합니다.
예시
// codecvt_always_noconv.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc ( "German_Germany" );
bool result1 = use_facet<codecvt<char, char, mbstate_t>>
( loc ).always_noconv( );
if ( result1 )
cout << "No conversion is needed." << '\n';
else
cout << "At least one conversion is required." << '\n';
bool result2 = use_facet<codecvt<wchar_t, char, mbstate_t>>
( loc ).always_noconv( );
if ( result2 )
cout << "No conversion is needed." << '\n';
else
cout << "At least one conversion is required." << '\n';
}
No conversion is needed.
At least one conversion is required.
codecvt::codecvt
변환을 처리할 로캘 패싯으로 사용하는 codecvt 클래스 개체의 생성자입니다.
explicit codecvt(size_t refs = 0);
매개 변수
refs
개체에 대한 메모리 관리의 유형을 지정하는 데 사용하는 정수 값입니다.
설명
refs
매개 변수에 대해 사용 가능한 값과 해당 중요도는 다음과 같습니다.
0: 개체를 포함하는 로캘에 의해 개체의 수명이 관리됩니다.
1: 개체의 수명을 수동으로 관리해야 합니다.
2: 이러한 값은 정의되지 않습니다.
생성자는 .을 사용하여 locale::facet
(refs)
기본 개체를 초기화합니다locale::facet
.
codecvt::do_always_noconv
변환을 수행할 필요가 없는지 테스트하기 위해 호출된 가상 함수입니다.
virtual bool do_always_noconv() const throw();
Return Value
보호된 가상 멤버 함수는 호출할 때마다 반환되거나 do_out
반환되는 do_in
경우에만 반환 true
됩니다noconv
.
템플릿 버전은 항상 .를 반환합니다 true
.
예시
를 호출하는 예제를 always_noconv
참조하세요 do_always_noconv
.
codecvt::do_encoding
스트림의 Byte
인코딩이 상태에 따라 달라지는지, 사용된 값과 생성된 값 간의 Byte
비율이 일정한지 여부를 테스트하는 CharType
가상 함수이며, 이 경우 해당 비율의 값을 결정합니다.
virtual int do_encoding() const throw();
Return Value
보호된 가상 멤버 함수는 다음을 반환합니다.
-1입니다. 형식
extern_type
시퀀스의 인코딩이 상태에 따라 달라지는 경우0: 인코딩에 다양한 길이의 시퀀스가 포함된 경우
N
인코딩에 길이 시퀀스만 포함되는 경우N
예시
do_encoding
을 호출하는 encoding에 대한 예제를 참조하세요.
codecvt::d o_in
외부 Byte
값 시퀀스를 내부 CharType
값 시퀀스로 변환하기 위해 호출되는 가상 함수입니다.
virtual result do_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
된 후 오는 대상 시퀀스의 첫 번째 변환되지 않은 문자에 대한 포인터입니다.
Return Value
작업의 성공, 부분적 성공 또는 실패를 나타내는 반환입니다. 함수에서 다음을 반환합니다.
codecvt_base::error
소스 시퀀스가 잘못되면 입니다.함수가 변환을 수행하지 않은 경우
codecvt_base::noconv
codecvt_base::ok
변환에 성공하면 입니다.codecvt_base::partial
원본이 부족하거나 대상이 충분히 크지 않으면 변환이 성공합니다.
설명
state
는 새 소스 시퀀스의 시작 부분에 있는 초기 변환 상태를 나타내야 합니다. 함수는 성공적인 변환의 현재 상태를 반영하기 위해 필요에 따라 해당 저장 값을 변경합니다. 저장 값은 달리 지정되지 않습니다.
예시
를 호출하는 예제를 in
참조하세요 do_in
.
codecvt::do_length
지정된 외부 Byte
값 시퀀스의 값 수를 Byte
결정하여 지정된 수의 내부 CharType
값을 생성하고 해당 값 수를 Byte
반환하는 가상 함수입니다.
virtual int do_length(
const StateType& state,
const Byte* first1,
const Byte* last1,
size_t len2) const;
매개 변수
state
멤버 함수에 대한 호출 사이에 유지되는 변환 상태입니다.
first1
외부 시퀀스의 시작 부분에 대한 포인터입니다.
last1
외부 시퀀스의 끝 부분에 대한 포인터입니다.
len2
멤버 함수에서 반환할 수 있는 최대 Byte
값 수입니다.
Return Value
[first1
, )에서 외부 소스 시퀀스로 정의된 len2보다 크지 않은 최대 변환 횟수를 나타내는 정수last1
입니다.
설명
보호된 가상 멤버 함수는 상태(상태 복사본), 일부 버퍼 buf
및 포인터 및 을 효과적으로 호출 do_in( state, first1, last1, next1, buf, buf + len2, next2)
합니다 next1
next2
.
그런 다음 next2
- buf
를 반환합니다. 원본 시퀀스로 정의된 len2보다 크지 않은 최대 변환 수를 계산합니다( [first1
, last1
).
템플릿 버전은 항상 더 적은 수와 을 last1
- first1
반환합니다 len2
.
예시
를 호출하는 예제를 length
참조하세요 do_length
.
codecvt::do_max_length
하나의 내부 CharType
값을 생성하는 데 필요한 최대 외부 Byte
값 수를 반환하는 가상 함수입니다.
virtual int do_max_length() const throw();
Return Value
을 Byte
생성하는 CharType
데 필요한 최대 값 수입니다.
설명
보호된 가상 멤버 함수는 임의의 유효한 값 및 에 대해 반환 do_length
( first1, last1, 1)
할 수 있는 가장 큰 허용 가능한 값을 first1
반환합니다 last1
.
예시
를 호출하는 예제를 max_length
참조하세요 do_max_length
.
codecvt::do_out
내부 CharType
값 시퀀스를 외부 Byte
값 시퀀스로 변환하기 위해 호출되는 가상 함수입니다.
virtual result do_out(
StateType& state,
const CharType* first1,
const CharType* last1,
const CharType*& next1,
Byte* first2,
Byte* last2,
Byte*& next2) const;
매개 변수
state
멤버 함수에 대한 호출 사이에 유지되는 변환 상태입니다.
first1
변환할 시퀀스의 시작 부분에 대한 포인터입니다.
last1
변환할 시퀀스의 끝 부분에 대한 포인터입니다.
next1
마지막으로 CharType
변환된 CharType
후 변환되지 않은 첫 번째 포인터에 대한 참조입니다.
first2
변환된 시퀀스의 시작 부분에 대한 포인터입니다.
last2
변환된 시퀀스의 끝 부분에 대한 포인터입니다.
next2
마지막으로 Byte
변환된 Byte
후 변환되지 않은 첫 번째 포인터에 대한 참조입니다.
Return Value
함수에서 다음을 반환합니다.
codecvt_base::error
소스 시퀀스가 잘못되면 입니다.함수가 변환을 수행하지 않은 경우
codecvt_base::noconv
codecvt_base::ok
변환에 성공하면 입니다.codecvt_base::partial
원본이 부족하거나 대상이 변환에 성공할 만큼 충분히 크지 않은 경우
설명
state
는 새 소스 시퀀스의 시작 부분에 있는 초기 변환 상태를 나타내야 합니다. 함수는 성공적인 변환의 현재 상태를 반영하기 위해 필요에 따라 해당 저장 값을 변경합니다. 저장 값은 달리 지정되지 않습니다.
예시
do_out
을 호출하는 out에 대한 예제를 참조하세요.
codecvt::do_unshift
값 시퀀스의 Byte
마지막 문자를 완료하기 위해 상태 종속 변환에 필요한 값을 제공하기 Byte
위해 호출된 가상 함수입니다.
virtual result do_unshift(
StateType& state,
Byte* first2,
Byte* last2,
Byte*& next2) const;
매개 변수
state
멤버 함수에 대한 호출 사이에 유지되는 변환 상태입니다.
first2
대상 범위에서 첫 번째 위치에 대한 포인터입니다.
last2
대상 범위에서 마지막 위치에 대한 포인터입니다.
next2
대상 시퀀스의 변경되지 않은 첫 번째 요소에 대한 포인터입니다.
Return Value
함수에서 다음을 반환합니다.
codecvt_base::error
상태가 잘못된 상태를 나타내는 경우함수가 변환을 수행하지 않은 경우
codecvt_base::noconv
codecvt_base::ok
변환에 성공하면codecvt_base::partial
대상이 변환에 성공할 만큼 충분히 크지 않은 경우
설명
보호된 가상 멤버 함수는 종료 Byte
요소(0)를 제외하고 소스 요소CharType
(0)를 [ first2
last2
내에 저장하는 대상 시퀀스로 변환하려고 합니다. 이 함수는 대상 시퀀스의 변경되지 않은 첫 번째 요소에 대한 포인터를 항상 next2
에 저장합니다.
State
는 새 소스 시퀀스의 시작 부분에 있는 초기 변환 상태를 나타내야 합니다. 함수는 성공적인 변환의 현재 상태를 반영하기 위해 필요에 따라 해당 저장 값을 변경합니다. 일반적으로 원본 요소 CharType
(0)를 변환하면 현재 상태가 초기 변환 상태로 남습니다.
예시
를 호출하는 예제를 unshift
참조하세요 do_unshift
.
codecvt::encoding
스트림의 Byte
인코딩이 상태에 따라 달라지는지, 사용된 값과 CharType
생성된 값 간의 Byte
비율이 일정한지 여부를 테스트하고, 이 경우 해당 비율의 값을 결정합니다.
int encoding() const throw();
Return Value
반환 값이 양수이면 해당 값은 문자를 생성하는 CharType
데 필요한 문자의 Byte
상수 수입니다.
보호된 가상 멤버 함수는 다음을 반환합니다.
-1입니다. 형식
extern_type
시퀀스의 인코딩이 상태에 따라 달라지는 경우0: 인코딩에 다양한 길이의 시퀀스가 포함된 경우
N
인코딩에 길이N
시퀀스만 포함되는 경우 .
설명
멤버 함수는 do_encoding을 반환합니다.
예시
// codecvt_encoding.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc ( "German_Germany" );
int result1 = use_facet<codecvt<char, char, mbstate_t>> ( loc ).encoding ( );
cout << result1 << '\n';
result1 = use_facet<codecvt<wchar_t, char, mbstate_t>> ( loc ).encoding( );
cout << result1 << '\n';
result1 = use_facet<codecvt<char, wchar_t, mbstate_t>> ( loc ).encoding( );
cout << result1 << '\n';
}
1
1
1
codecvt::extern_type
외부 표현에 사용되는 문자 형식입니다.
typedef Byte extern_type;
설명
이 형식은 템플릿 매개 변수 Byte
의 동의어입니다.
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
CharType
대상 시퀀스의 첫 번째 변환되지 않은 문자로 마지막으로 변환 Chartype
된 후에 오는 포인터입니다.
Return Value
작업의 성공, 부분적 성공 또는 실패를 나타내는 반환입니다. 함수에서 다음을 반환합니다.
codecvt_base::error
소스 시퀀스가 잘못되면 입니다.함수가 변환을 수행하지 않은 경우
codecvt_base::noconv
codecvt_base::ok
변환에 성공하면 입니다.codecvt_base::partial
원본이 부족하거나 대상이 변환에 성공할 만큼 충분히 크지 않은 경우
설명
state
는 새 소스 시퀀스의 시작 부분에 있는 초기 변환 상태를 나타내야 합니다. 함수는 성공적인 변환의 현재 상태를 반영하기 위해 필요에 따라 해당 저장 값을 변경합니다. 일부 변환 이후 새 문자가 도착할 때 변환이 다시 시작할 수 있도록 state
를 설정해야 합니다.
멤버 함수는 do_in
( state, first1, last1, next1, first2, last2, next2)
를 반환합니다.
예시
// codecvt_in.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
using namespace std;
#define LEN 90
int main( )
{
const 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}; // zero-initialization represents the initial conversion state for mbstate_t
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"]" << '\n';
exit(-1);
}
It worked! The converted string is:
[This is the string to be converted!]
codecvt::intern_type
내부 표현에 사용되는 문자 형식입니다.
typedef CharType intern_type;
설명
이 형식은 템플릿 매개 변수 CharType
의 동의어입니다.
codecvt::length
Byte
지정된 외부 Byte
값 시퀀스의 값 수가 지정된 내부 CharType
값 수를 초과하지 않는지 확인하고 해당 값 수를 Byte
반환합니다.
int length(
const StateType& state,
const Byte* first1,
const Byte* last1,
size_t len2) const;
매개 변수
state
멤버 함수에 대한 호출 사이에 유지되는 변환 상태입니다.
first1
외부 시퀀스의 시작 부분에 대한 포인터입니다.
last1
외부 시퀀스의 끝 부분에 대한 포인터입니다.
len2
멤버 함수에서 반환할 수 있는 최대 바이트 수입니다.
Return Value
[first1
, last1
)에서 외부 소스 시퀀스로 정의된 len2
보다 크지 않은 최대 변환 수의 개수를 나타내는 정수입니다.
설명
멤버 함수는 do_length
( state, first1, last1, len2)
를 반환합니다.
예시
// codecvt_length.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
using namespace std;
#define LEN 90
int main( )
{
const char* pszExt = "This is the string whose length is to be measured!";
mbstate_t state = {0}; // zero-initialization represents the initial conversion state for mbstate_t
locale loc("C"); // English_Britain"); //German_Germany
int res = use_facet<codecvt<wchar_t, char, mbstate_t>>
( loc ).length( state,
pszExt, &pszExt[strlen(pszExt)], LEN );
cout << "The length of the string is: ";
wcout << res;
cout << "." << '\n';
exit(-1);
}
The length of the string is: 50.
codecvt::max_length
하나의 내부 CharType
값을 생성하는 데 필요한 최대 외부 Byte
값 수를 반환합니다.
int max_length() const throw();
Return Value
을 Byte
생성하는 CharType
데 필요한 최대 값 수입니다.
설명
멤버 함수는 do_max_length
를 반환합니다.
예시
// codecvt_max_length.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
using namespace std;
int main( )
{
locale loc( "C");//English_Britain" );//German_Germany
int res = use_facet<codecvt<char, char, mbstate_t>>
( loc ).max_length( );
wcout << res << '\n';
}
1
codecvt::out
내부 CharType
값 시퀀스를 외부 Byte
값 시퀀스로 변환합니다.
result out(
StateType& state,
const CharType* first1,
const CharType* last1,
const CharType*& next1,
Byte* first2,
Byte* last2,
Byte*& next2) const;
매개 변수
state
멤버 함수에 대한 호출 사이에 유지되는 변환 상태입니다.
first1
변환할 시퀀스의 시작 부분에 대한 포인터입니다.
last1
변환할 시퀀스의 끝 부분에 대한 포인터입니다.
next1
마지막으로 CharType
변환된 CharType
후 변환되지 않은 첫 번째 포인터에 대한 참조입니다.
first2
변환된 시퀀스의 시작 부분에 대한 포인터입니다.
last2
변환된 시퀀스의 끝 부분에 대한 포인터입니다.
next2
마지막으로 변환Byte
된 Byte
후 변환되지 않은 첫 번째 포인터에 대한 참조입니다.
Return Value
멤버 함수는 do_out
( state, first1, last1, next1, first2, last2, next2)
를 반환합니다.
설명
자세한 내용은 codecvt::do_out
를 참조하세요.
예시
// codecvt_out.cpp
// compile with: /EHsc
#define _INTL
#include <locale>
#include <iostream>
#include <wchar.h>
using namespace std;
#define LEN 90
int main( )
{
char pszExt[LEN + 1];
const wchar_t* pwszInt = L"This is the wchar_t string to be converted.";
memset(&pszExt[0], 0, (sizeof(char)) * (LEN + 1));
char* pszNext;
const wchar_t* pwszNext;
mbstate_t state;
locale loc("C");//English_Britain");//German_Germany
int res = use_facet<codecvt<wchar_t, char, mbstate_t>>
(loc).out(state,
pwszInt, &pwszInt[wcslen(pwszInt)], pwszNext,
pszExt, &pszExt[wcslen(pwszInt)], pszNext);
pszExt[wcslen(pwszInt)] = 0;
cout << (res != codecvt_base::error ? "It worked: " : "It didn't work: ")
<< "The converted string is:\n ["
<< &pszExt[0]
<< "]" << '\n';
}
It worked: The converted string is:
[This is the wchar_t string to be converted.]
codecvt::state_type
내부 및 외부 표현 사이의 변환 중간 상태를 나타내는 데 사용하는 문자 형식입니다.
typedef StateType state_type;
설명
이 형식은 템플릿 매개 변수 StateType
의 동의어입니다.
codecvt::unshift
Byte
값 시퀀스의 Byte
마지막 문자를 완료하기 위해 상태 종속 변환에 필요한 값을 제공합니다.
result unshift(
StateType& state,
Byte* first2,
Byte* last2,
Byte*& next2) const;
매개 변수
state
멤버 함수에 대한 호출 사이에 유지되는 변환 상태입니다.
first2
대상 범위에서 첫 번째 위치에 대한 포인터입니다.
last2
대상 범위에서 마지막 위치에 대한 포인터입니다.
next2
대상 시퀀스의 변경되지 않은 첫 번째 요소에 대한 포인터입니다.
Return Value
함수에서 다음을 반환합니다.
codecvt_base::error
상태가 잘못된 상태를 나타내는 경우함수가 변환을 수행하지 않은 경우
codecvt_base::noconv
codecvt_base::ok
변환에 성공하면 입니다.codecvt_base::partial
대상이 변환에 성공할 만큼 충분히 크지 않으면
설명
보호된 가상 멤버 함수는 종료 Byte
요소(0)를 제외하고 소스 요소CharType
(0)를 [ first2
last2
내에 저장하는 대상 시퀀스로 변환하려고 합니다. 이 함수는 대상 시퀀스의 변경되지 않은 첫 번째 요소에 대한 포인터를 항상 next2
에 저장합니다.
state
는 새 소스 시퀀스의 시작 부분에 있는 초기 변환 상태를 나타내야 합니다. 함수는 성공적인 변환의 현재 상태를 반영하기 위해 필요에 따라 해당 저장 값을 변경합니다. 일반적으로 원본 요소 CharType
(0)를 변환하면 현재 상태가 초기 변환 상태로 남습니다.
멤버 함수는 do_unshift
( state, first2, last2, next2 )
를 반환합니다.