std::codecvt_mode
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody>| Определено в заголовочном файле <locale>
|
||
enum codecvt_mode { consume_header = 4, generate_header = 2, little_endian = 1 }; |
||
Граней std::codecvt_utf8, std::codecvt_utf16, и std::codecvt_utf8_utf16 принять дополнительное значение типа std::codecvt_mode в качестве аргумента шаблона, который определяет дополнительные функции преобразования Unicode строки.
Оригинал:
The facets std::codecvt_utf8, std::codecvt_utf16, and std::codecvt_utf8_utf16 accept an optional value of type std::codecvt_mode as a template argument, which specifies optional features of the unicode string conversion.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Константы
Определены в заголовочном файле
<locale> | |
Value
Оригинал: Value Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Meaning |
little_endian
|
Предположим, вход находится в маленькой обратным порядком байтов (относится к UTF-16 только вход, то по умолчанию от старшего к младшему)
Оригинал: assume the input is in little-endian byte order (applies to UTF-16 input only, the default is big-endian) Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
consume_header
|
потребляют метку порядка байтов, если он присутствует в начале входной последовательности, и (в случае UTF-16), полагаются на порядок байт это указывает для декодирования остальных вход
Оригинал: consume the byte order mark, if present at the start of input sequence, and (in case of UTF-16), rely on the byte order it specifies for decoding the rest of the input Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
generate_header
|
выводить знак порядка байтов в начале выходной последовательности
Оригинал: output the byte order mark at the start of the output sequence Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Признанные марки порядок байтов являются:
Оригинал:
The recognized byte order marks are:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
0xfe 0xff
|
UTF-16 с обратным порядком байтов
Оригинал: UTF-16 big-endian Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
0xff 0xfe
|
UTF-16 с прямым порядком байтов
Оригинал: UTF-16 little-endian Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
0xef 0xbb 0xbf
|
UTF-8 (не влияет на порядок байтов)
Оригинал: UTF-8 (no effect on endianness) Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
Если std::consume_header не выбрано при чтении файла, начиная с метку порядка байтов, Юникод U + FEFF (Zero шириной неразрывный пробел) будет читаться как первый символ строки содержания.
Оригинал:
If std::consume_header is not selected when reading a file beginning with byte order mark, the Unicode character U+FEFF (Zero width non-breaking space) will be read as the first character of the string content.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пример
В следующем примере показано много UTF-8
Оригинал:
The following example demonstrates consuming the UTF-8 BOM
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Запустить этот код
#include <fstream>
#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
int main()
{
// UTF-8 data with BOM
std::ofstream("text.txt") << u8"\ufeffz\u6c34\U0001d10b";
// read the UTF8 file, skipping the BOM
std::wifstream fin("text.txt");
fin.imbue(std::locale(fin.getloc(),
new std::codecvt_utf8<wchar_t, 0x10ffff, std::consume_header>));
for(wchar_t c; fin.get(c); )
std::cout << std::hex << std::showbase << c << '\n';
}
Вывод:
0x7a
0x6c34
0x1d10b
См. также
| конвертирует между кодировками символов, включая UTF-8, UTF-16, UTF-32 (шаблон класса) | |
(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 (шаблон класса) |