std::codecvt<InternT,ExternT,StateT>::encoding, do_encoding
Определено в заголовке <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. Возвращаемое значение
Точное количество externT символов, соответствующих одному internT символу, если оно постоянно. 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] |
возвращает максимальное количество ExternT символов, которые могут быть преобразованы в один InternT символ (виртуальная защищенная член-функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/locale/codecvt/encoding