std::codecvt
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody>| Определено в заголовочном файле <locale>
|
||
template< class InternT, class ExternT, class State > class codecvt; |
||
Класс std::codecvt инкапсулирует преобразования символьных строк, в том числе широкий и многобайтовые, из одной кодировки в другую. Все файловые операции ввода / вывода осуществляется через
std::basic_fstream<CharT> использовать std::codecvt<CharT, char, std::mbstate_t> аспект языка проникнут в потоке.Оригинал:
Class std::codecvt encapsulates conversion of character strings, including wide and multibyte, from one encoding to another. All file I/O operations performed through
std::basic_fstream<CharT> use the std::codecvt<CharT, char, std::mbstate_t> facet of the locale imbued in the stream.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Диаграмма наследования
Четыре специализации предоставляются стандартные библиотеки и осуществляются все локали объекты, созданные в C + + программ
Оригинал:
Four specializations are provided by the standard library and are implemented by all locale objects created in a C++ program:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Определены в заголовочном файле
<locale> | |
std::codecvt<char, char, std::mbstate_t>
|
тождественное преобразование
Оригинал: identity conversion Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
std::codecvt<char16_t, char, std::mbstate_t>
|
преобразования между UTF-16 и UTF-8 (начиная с C++11)
Оригинал: conversion between UTF-16 and UTF-8 (начиная с C++11) Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
std::codecvt<char32_t, char, std::mbstate_t>
|
преобразования между UTF-32 и UTF-8 (начиная с C++11)
Оригинал: conversion between UTF-32 and UTF-8 (начиная с C++11) Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
std::codecvt<wchar_t, char, std::mbstate_t>
|
локалей преобразования между строку широких и узких, возможно, многобайтовые, строка
Оригинал: locale-specific conversion between wide string and narrow, possibly multibyte, string Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Типы-члены
| Тип члена | Определение |
intern_type
|
internT
|
extern_type
|
externT
|
state_type
|
stateT
|
Член объектов
Имя пользователя
Оригинал: Member name Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Type |
id (статическим)
|
std::locale::id |
Функции-члены
строит новую грань codecvt Оригинал: constructs a new codecvt facet Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
разрушает codecvt грань Оригинал: destructs a codecvt facet Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (protected функция-элемент) | |
Вызывает do_out Оригинал: invokes do_out Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
Вызывает do_in Оригинал: invokes do_in Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
Вызывает do_unshift Оригинал: invokes do_unshift Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
Вызывает do_encoding Оригинал: invokes do_encoding Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
Вызывает do_always_noconv Оригинал: invokes do_always_noconv Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
Вызывает do_length Оригинал: invokes do_length Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
Вызывает do_max_length Оригинал: invokes do_max_length Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) |
Охраняемые функций-членов
[virtual] |
преобразует строку из internT в externT, например, при записи в файл Оригинал: converts a string from internT to externT, such as when writing to file Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
[virtual] |
преобразует строку из externT в internT, например, при чтении из файла Оригинал: converts a string from externT to internT, such as when reading from file Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
[virtual] |
генерирует последовательность прекращения характер externT символов для неполного преобразования Оригинал: generates the termination character sequence of externT characters for incomplete conversion Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
[virtual] |
возвращает количество externT символы, необходимые для производства одной internT характер, если постоянная Оригинал: returns the number of externT characters necessary to produce one internT character, if constant Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
[virtual] |
Тесты, если грань кодирует тождественное преобразование для всех допустимых значений аргумента Оригинал: tests if the facet encodes an identity conversion for all valid argument values Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
[virtual] |
вычисляет длину externT строку, которая будет потребляться преобразования в данной internT буфера Оригинал: calculates the length of the externT string that would be consumed by conversion into given internT buffer Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
[virtual] |
возвращает максимальное число externT символы, которые могут быть преобразованы в единый internT характер Оригинал: returns the maximum number of externT characters that could be converted into a single internT character Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (virtual protected функция-элемент) |
Унаследован от std::codecvt_base
| Тип члена | Определение |
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. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Пример
В следующих примерах говорится в UTF-8 файл, используя язык, который реализует UTF-8 преобразование в codecvt <wchar_t, char, mbstate_t>
Оригинал:
The following examples reads a UTF-8 file using a locale which implements UTF-8 conversion in codecvt<wchar_t, char, mbstate_t>
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Запустить этот код
#include <iostream>
#include <fstream>
#include <string>
#include <locale>
#include <iomanip>
int main()
{
// UTF-8 narrow multibyte encoding
std::ofstream("text.txt") << u8"z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋"
// or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
std::wifstream fin("text.txt");
fin.imbue(std::locale("en_US.UTF-8")); // this locale's codecvt<wchar_t, char, mbstate_t>
// converts UTF-8 to UCS4
std::cout << "The UTF-8 file contains the following wide characters: \n";
for(wchar_t c; fin >> c; )
std::cout << "U+" << std::hex << std::setw(4) << std::setfill('0') << c << '\n';
}
Вывод:
The UTF-8 file contains the following wide characters:
U+007a
U+00df
U+6c34
U+1d10b
См. также
| 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> |
Н/Д |
| 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 |
Нет | Нет |
определяет ошибки преобразования символов Оригинал: defines character conversion errors Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон класса) | |
создает codecvt аспект для указанного языка Оригинал: creates a codecvt facet for the named locale Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон класса) | |
(C++11)(устарело в C++17) |
конвертирует между UTF-8 и UCS-2/UCS-4 (шаблон класса) |
(C++11)(устарело в C++17) |
конвертирует между UTF-16 и UCS-2/UCS-4 (шаблон класса) |
(C++11)(устарело в C++17) |
конвертирует между UTF-8 и UTF-16 (шаблон класса) |