다음을 통해 공유


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_tchar 시퀀스 사이에서 변환합니다.

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)를 [ first2last2내에 저장하는 대상 시퀀스로 변환하려고 합니다. 이 함수는 대상 시퀀스의 변경되지 않은 첫 번째 요소에 대한 포인터를 항상 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
마지막으로 변환ByteByte 후 변환되지 않은 첫 번째 포인터에 대한 참조입니다.

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)를 [ first2last2내에 저장하는 대상 시퀀스로 변환하려고 합니다. 이 함수는 대상 시퀀스의 변경되지 않은 첫 번째 요소에 대한 포인터를 항상 next2에 저장합니다.

state는 새 소스 시퀀스의 시작 부분에 있는 초기 변환 상태를 나타내야 합니다. 함수는 성공적인 변환의 현재 상태를 반영하기 위해 필요에 따라 해당 저장 값을 변경합니다. 일반적으로 원본 요소 CharType(0)를 변환하면 현재 상태가 초기 변환 상태로 남습니다.

멤버 함수는 do_unshift( state, first2, last2, next2 )를 반환합니다.

참고 항목

<locale>
코드 페이지
로캘 이름, 언어 및 국가/지역 문자열
C++ 표준 라이브러리의 스레드 보안