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

std::codecvt_utf16

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

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

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

class codecvt_utf16 : public std::codecvt<Elem, char, std::mbstate_t>;;
std::codecvt_utf16 является std::codecvt аспект, который инкапсулирует преобразования между UTF-16 строка в кодировке байт и UCS2 или UCS4 строку символов (в зависимости от типа Elem). Это codecvt аспект может быть использован для чтения и записи UTF-16 файлов в двоичном режиме.
Оригинал:
std::codecvt_utf16 is a std::codecvt facet which encapsulates conversion between a UTF-16 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-16 files in binary mode.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

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

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

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

Member types

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

Member objects

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

Member functions

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

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

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

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

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

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

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

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

Protected member functions

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

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

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

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

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

(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 Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

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

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


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

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

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

В следующем примере показано декодирование UTF-16LE файл на системе с 32-битной wchar_t. В системе с 16-битной wchar_t, расшифровки третьего символа не удастся, потому что std::codecvt_utf16<char16_t> производит UCS2, а не UTF-16 .
Оригинал:
The following example demonstrates decoding of UTF-16le file on a system with 32-bit wchar_t. On a system with 16-bit wchar_t, decoding of the third character will fail because std::codecvt_utf16<char16_t> produces UCS2, not UTF-16.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

#include <fstream>
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
void prepare_file()
{
    // UTF-16le data (if host system is little-endian)
    char16_t utf16le[4] ={0x007a,          // latin small letter 'z' U+007a
                          0x6c34,          // CJK ideograph "water"  U+6c34
                          0xd834, 0xdd0b}; // musical sign segno U+1d10b
    // store in a file
    std::ofstream fout("text.txt");
    fout.write( reinterpret_cast<char*>(utf16le), sizeof utf16le);
}
int main()
{
    prepare_file();
    // open as a byte stream
    std::wifstream fin("text.txt", std::ios::binary);
    // apply facet
    fin.imbue(std::locale(fin.getloc(),
       new std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>));
 
    for(wchar_t c; fin.get(c); )
            std::cout << std::showbase << std::hex << c << '\n';
}

Вывод:

0x7a
0x6c34
0x1d10b

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

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 Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

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

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

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