Namespaces
Variants

std::codecvt<InternT,ExternT,StateT>:: encoding, do_encoding

From cppreference.net
헤더 파일에 정의됨 <locale>
(1)
public :
int encoding ( ) const throw ( ) ;
(C++11까지)
public :
int encoding ( ) const noexcept ;
(C++11부터)
(2)
protected :
virtual int do_encoding ( ) const throw ( ) ;
(C++11까지)
protected :
virtual int do_encoding ( ) const noexcept ;
(C++11부터)
1) 공개 멤버 함수로, 가장 파생된 클래스의 do_encoding 멤버 함수를 호출합니다.
2) 이 codecvt 패싯이 나타내는 인코딩이 각 내부 문자를 동일하고 고정된 수의 외부 문자로 매핑하는 경우, 그 수를 반환합니다. 인코딩이 가변 길이(예: UTF-8 또는 UTF-16)인 경우 0 를 반환합니다. 인코딩이 상태에 종속적인 경우 - 1 를 반환합니다.

반환값

하나의 internT 문자에 대응하는 externT 문자의 정확한 개수 (상수일 경우). 0 개수가 가변적일 경우, - 1 인코딩이 상태에 의존적일 경우.

비변환 특수화 std:: codecvt < char , char , std:: mbstate_t > 1 을 반환합니다.

예제

#include <iostream>
#include <locale>
int main()
{
    std::cout << "en_US.utf8 is a variable-length encoding, encoding() returns "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("en_US.utf8")
                 ).encoding() << '\n';
    std::cout << "zh_CN.gb18030 is also variable-length, encoding() == "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("zh_CN.gb18030")
                 ).encoding() << '\n';
    std::cout << "ru_RU.koi8r is a single-byte encoding, encoding() == "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("ru_RU.koi8r")
                 ).encoding() << '\n';
}

출력:

en_US.utf8 is a variable-length encoding, encoding() returns 0
zh_CN.gb18030 is also variable-length, encoding() == 0
ru_RU.koi8r is a single-byte encoding, encoding() == 1

참고 항목

MB_CUR_MAX
현재 C 로캘에서 멀티바이트 문자의 최대 바이트 수
(매크로 변수)
[virtual]
단일 InternT 문자로 변환될 수 있는 최대 ExternT 문자 수를 반환
(가상 protected 멤버 함수)