public member function
<locale>

std::codecvt::encoding

int encoding() const throw();
int encoding() const noexcept;
返回编码宽度
如果这是一个固定值,则返回外部字符相对于内部字符的宽度。

否则,如果这是一个可变值,该函数返回0.

或者,如果外部序列的编码是状态相关的,则该函数返回-1.

内部,此函数仅调用虚拟受保护成员 do_encoding,该成员在默认情况下按上述方式工作。

参数



返回值

以下之一,描述外部字符如何编码
解释
0字符具有可变宽度,每种字符的最大长度为 max_length
-1编码是状态相关的,可能每个字符除了 max_length 之外还有额外的移位码。
其他值相当于一个内部字符的固定数量的外部字符

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// codecvt::encoding example
#include <iostream>       // std::cout
#include <locale>         // std::locale, std::codecvt, std::use_facet

int main ()
{
  std::locale loc;

  const std::codecvt<wchar_t,char,mbstate_t>& myfacet = 
    std::use_facet<std::codecvt<wchar_t,char,mbstate_t> >(loc);

  std::cout << "Characteristics of codecvt<wchar_t,char,mbstate_t>:\n";
  std::cout << "Encoding: " << myfacet.encoding() << '\n';
  std::cout << "Always noconv: " << myfacet.always_noconv() << '\n';
  std::cout << "Max length: " << myfacet.max_length() << '\n';
  return 0;
}

可能的输出

Characteristics of codecvt<wchar_t,char,mbstate_t>:
Encoding: 0
Always noconv: 0
Max length: 5


数据竞争

访问了 facet 对象。

异常安全

无异常保证: 绝不抛出异常。

另见