std::codecvt_mode
Материал из cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Заголовочный файл <locale>
|
||
| enum codecvt_mode { consume_header = 4, |
||
Граней std::codecvt_utf8, std::codecvt_utf16, и std::codecvt_utf8_utf16 принять дополнительное значение типа std::codecvt_mode в качестве аргумента шаблона, который определяет дополнительные функции преобразования Unicode строки.
Original:
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.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[править] Константы
| Определено в файле <locale>
| |
| Value
Original: Value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Meaning |
little_endian
|
Предположим, вход находится в маленькой обратным порядком байтов (относится к UTF-16 только вход, то по умолчанию от старшего к младшему)
Original: assume the input is in little-endian byte order (applies to UTF-16 input only, the default is big-endian) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
consume_header
|
потребляют метку порядка байтов, если он присутствует в начале входной последовательности, и (в случае UTF-16), полагаются на порядок байт это указывает для декодирования остальных вход
Original: 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 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
generate_header
|
выводить знак порядка байтов в начале выходной последовательности
Original: output the byte order mark at the start of the output sequence The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Признанные марки порядок байтов являются:
Original:
The recognized byte order marks are:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
0xfe 0xff
|
UTF-16 с обратным порядком байтов
Original: UTF-16 big-endian The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
0xff 0xfe
|
UTF-16 с прямым порядком байтов
Original: UTF-16 little-endian The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
0xef 0xbb 0xbf
|
UTF-8 (не влияет на порядок байтов)
Original: UTF-8 (no effect on endianness) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Если std::consume_header не выбрано при чтении файла, начиная с метку порядка байтов, Юникод U + FEFF (Zero шириной неразрывный пробел) будет читаться как первый символ строки содержания.
Original:
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.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[править] Пример
В следующем примере показано много UTF-8
Original:
The following example demonstrates consuming the UTF-8 BOM
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#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 Original: converts between character encodings, including UTF-8, UTF-16, UTF-32 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) | |
| (C++11) |
преобразования между UTF-8 и UCS2/UCS4 Original: converts between UTF-8 and UCS2/UCS4 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) |
| (C++11) |
преобразования между UTF-16 и UCS2/UCS4 Original: converts between UTF-16 and UCS2/UCS4 The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон класса) |
| (C++11) |
converts between UTF-8 and UTF-16 (шаблон класса) |