Пространства имён
Варианты
Действия

std::codecvt_utf8

Материал из cppreference.com
< cpp‎ | locale

Определено в заголовочном файле <codecvt>
template<

    class Elem,
    unsigned long Maxcode = 0x10ffff,
    std::codecvt_mode Mode = (std::codecvt_mode)0

> class codecvt_utf8 : public std::codecvt<Elem, char, std::mbstate_t>;
std::codecvt_utf8 является std::codecvt аспект, который инкапсулирует преобразования между UTF-8 строку в кодировке байт и UCS2 или UCS4 строку символов (в зависимости от типа Elem). Это codecvt аспект может быть использован для чтения и записи UTF-8 файлов, как текстовых, так и двоичных.
Оригинал:
std::codecvt_utf8 is a std::codecvt facet which encapsulates conversion between a UTF-8 encoded byte string and UCS2 or UCS4 character string (depending on the type of Elem). This codecvt facet can be used to read and write UTF-8 files, both text and binary.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Параметры шаблона

Elem -
либо char16_t, char32_t, или wchar_t
Оригинал:
either char16_t, char32_t, or wchar_t
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Maxcode -
Наибольшее значение Elem, что данный аспект будет читать и писать без ошибок
Оригинал:
the largest value of Elem that this facet will read or write without error
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Mode -
константа типа std::codecvt_mode
Оригинал:
a constant of type std::codecvt_mode
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Унаследован от std::codecvt

Member types

Член типа
Оригинал:
Member type
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Definition
intern_type internT
extern_type externT
state_type stateT

Member objects

Имя пользователя
Оригинал:
Member name
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Type
id (статическим) std::locale::id

Member functions

Вызывает do_out
Оригинал:
invokes do_out
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::codecvt) [edit]
Вызывает do_in
Оригинал:
invokes do_in
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::codecvt) [edit]
Вызывает do_unshift
Оригинал:
invokes do_unshift
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::codecvt) [edit]
Вызывает do_encoding
Оригинал:
invokes do_encoding
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::codecvt) [edit]
Вызывает do_always_noconv
Оригинал:
invokes do_always_noconv
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::codecvt) [edit]
Вызывает do_length
Оригинал:
invokes do_length
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::codecvt) [edit]
Вызывает do_max_length
Оригинал:
invokes do_max_length
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::codecvt) [edit]

Protected member functions

[virtual]
преобразует строку из internT в externT, например, при записи в файл
Оригинал:
converts a string from internT to externT, such as when writing to file
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]
[virtual]
преобразует строку из externT в internT, например, при чтении из файла
Оригинал:
converts a string from externT to internT, such as when reading from file
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]
[virtual]
генерирует последовательность прекращения характер externT символов для неполного преобразования
Оригинал:
generates the termination character sequence of externT characters for incomplete conversion
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]
[virtual]
возвращает количество externT символы, необходимые для производства одной internT характер, если постоянная
Оригинал:
returns the number of externT characters necessary to produce one internT character, if constant
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]
Тесты, если грань кодирует тождественное преобразование для всех допустимых значений аргумента
Оригинал:
tests if the facet encodes an identity conversion for all valid argument values
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]
[virtual]
вычисляет длину externT строку, которая будет потребляться преобразования в данной internT буфера
Оригинал:
calculates the length of the externT string that would be consumed by conversion into given internT buffer
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]
возвращает максимальное число externT символы, которые могут быть преобразованы в единый internT характер
Оригинал:
returns the maximum number of externT characters that could be converted into a single internT character
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]


Унаследован от std::codecvt_base

Член типа
Оригинал:
Member type
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Definition
enum result { ok, partial, error, noconv };
Незаданной типа перечисления
Оригинал:
Unscoped enumeration type
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Перечисление постоянно
Оригинал:
Enumeration constant
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Definition
ok
Преобразование была завершена без ошибок
Оригинал:
conversion was completed with no error
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
partial
Не все символы источником были преобразованы
Оригинал:
not all source characters were converted
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
error
встречается недопустимый символ
Оригинал:
encountered an invalid character
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
noconv
преобразование не требуется, вход и выход типов одинаковы
Оригинал:
no conversion required, input and output types are the same
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

В следующем примере показана разница между UCS2/UTF-8 и UTF-16/UTF-8 преобразований: третий символ в строке не является допустимым символом UCS2 .
Оригинал:
The following example demonstrates the difference between UCS2/UTF-8 and UTF-16/UTF-8 conversions: the third character in the string is not a valid UCS2 character.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
int main()
{
    // UTF-8 data. The character U+1d10b, musical sign segno, does not fit in UCS2
    std::string utf8 = u8"z\u6c34\U0001d10b";
 
    // the UTF-8 / UTF-16 standard conversion facet
    std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> utf16conv;
    std::u16string utf16 = utf16conv.from_bytes(utf8);
    std::cout << "UTF16 conversion produced " << utf16.size() << " code points:\n";
    for(char16_t c : utf16)
        std::cout << std::hex << std::showbase << c << '\n';
 
    // the UTF-8 / UCS2 standard conversion facet
    std::wstring_convert<std::codecvt_utf8<char16_t>, char16_t> ucs2conv;
    try {
        std::u16string ucs2 = ucs2conv.from_bytes(utf8);
    } catch(const std::range_error& e) {
        std::u16string ucs2 = ucs2conv.from_bytes(utf8.substr(0, ucs2conv.converted()));
        std::cout << "UCS2 failed after producing " << std::dec << ucs2.size()<<" characters:\n";
        for(char16_t c : ucs2)
            std::cout << std::hex << std::showbase << c << '\n';
    }
}

Вывод:

UTF16 conversion produced 4 code points:
0x7a
0x6c34
0xd834
0xdd0b
UCS2 failed after producing 2 characters:
0x7a
0x6c34

[править] См. также

Character
conversions
narrow multibyte
(char)
UTF-8
(char)
UTF-16
(char16_t)
UTF-16 mbrtoc16 / c16rtomb codecvt<char16_t, char, mbstate_t>
codecvt_utf8_utf16<char16_t>
codecvt_utf8_utf16<char32_t>
codecvt_utf8_utf16<wchar_t>
N/A
UCS2 Нет codecvt_utf8<char16_t> codecvt_utf16<char16_t>
UTF-32/UCS4
(char32_t)
mbrtoc32 / c32rtomb codecvt<char32_t, char, mbstate_t>
codecvt_utf8<char32_t>
codecvt_utf16<char32_t>
UCS2/UCS4
(wchar_t)
Нет codecvt_utf8<wchar_t> codecvt_utf16<wchar_t>
wide
(wchar_t)
codecvt<wchar_t, char, mbstate_t>
mbsrtowcs / wcsrtombs
Нет Нет
новообращенные между кодировками, в том числе UTF-8, UTF-16, UTF-32
Оригинал:
converts between character encodings, including UTF-8, UTF-16, UTF-32
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон класса) [edit]
тегами, чтобы изменить поведение стандартных аспектов codecvt
Оригинал:
tags to alter behavior of the standard codecvt facets
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(класс) [edit]
преобразования между UTF-16 и UCS2/UCS4
Оригинал:
converts between UTF-16 and UCS2/UCS4
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(шаблон класса) [edit]
converts between UTF-8 and UTF-16
(шаблон класса) [edit]