Многобайтовые строки с завершающим нулем
Многобайтовая строка с завершающим нулем или просто "многобайтовая строка" - это последовательность ненулевых байтов, которая завершается байтом со значением ноль (завершающий нулевой символ).
Каждый символ хранящийся в такой строке может занимать в памяти больше одного байта. Кодировка используемая для представления символов в многобайтовой строке зависит от выбранной локали: это может быть UTF-8, GB18030, EUC-JP, Shift-JIS, и т.д. К примеру, массив символов {'\xd0','\xba','\xd1','\x83','\0'} является многобайтовой строкой, содержащей "ку" в многобайтовой кодировке UTF-8: первые два байта представляют собой символ к, следующие два байта - у.
В некоторых многобайтовых кодировках любая заданная последовательность многобайтовых символов может представлять собой иные символы в зависимости от того какие байты шли до нее, это так называемый "сдвиг последовательностей". Такие кодировки больше известны как зависимые от текущего состояния: для определения каждого нового символа необходимо знать текущее состояние сдвига. Многобайтовая строка является правильной только в том случае, если она начинается и заканчивается в одинаковом состоянии сдвига: если в процессе разбора строки был встречен сдвиг, то соответствующий ему обратный сдвиг также должен присутствовать до того, как будет достигнут нулевой байт, обозначающий завершение строки. Примеры подобных кодировок: 7-битная JIS, BOCU-1 и SCSU.
Многобайтовые строки структурно-совместимы с однобайтовыми строками, завершающимися нулем, иными словами они могут быть сохранены, копированы и просмотрены с использованием тех же средств, за исключением средств подсчета символов. Если выбрана корректная локаль, функции ввода-вывода также будут поддерживать многобайтовые строки. Многобайтовые строки могут быть преобразованы в широкие строки и наоборот с помощью функций-членов std::codecvt, std::wstring_convert или с помощью следующих, зависимых от локали функций преобразования:
[править] Преобразование многобайтовых / широких строк
| Заголовочный файл
<cstdlib> | |
| Возвращает количество байтов в заданном мультибайтовом символ (функция) | |
| Преобразует заданный мультибайтовый символ в широкий символ (функция) | |
| Преобразует широкий символ в своё мультибайтовое представление (функция) | |
| Преобразует узкую многобайтовую символьную строку в многобайтовую широкую строку (функция) | |
| Преобразует широкую строку в узкую многобайтовую строку из символов (функция) | |
| Заголовочный файл
<cwchar> | |
| проверяет, является ли mbstate_t объект представляет начальное состояние смену Оригинал: checks if the mbstate_t object represents initial shift state Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| расширяется однобайтовые узкий характер широкого характера, если это возможно Оригинал: widens a single-byte narrow character to wide character, if possible Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| сужает широкий характер однобайтовые узкий характер, если это возможно Оригинал: narrows a wide character to a single-byte narrow character, if possible Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| возвращает количество байтов в следующем многобайтовом символе, начиная от указанного состояния Оригинал: returns the number of bytes in the next multibyte character, given state Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| преобразует следующий символ многобайтовых широкого характера, данное состояние Оригинал: converts the next multibyte character to wide character, given state Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| преобразует широкий символ в своем многобайтовых представление, данное состояние Оригинал: converts a wide character to its multibyte representation, given state Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| преобразует узкой буквенная многобайтовых широкой строки, данное состояние Оригинал: converts a narrow multibyte character string to wide string, given state Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| Преобразует строку широких к узким многобайтовой строки символов, данное состояние Оригинал: converts a wide string to narrow multibyte character string, given state Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) | |
| Заголовочный файл
<cuchar> | |
| (C++11) |
генерации следующего 16-битный символ из узких строку многобайтовых Оригинал: generate the next 16-bit wide character from a narrow multibyte string Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) |
| (C++11) |
Преобразование 16-битного широкий характер, чтобы сузить многобайтовую строку Оригинал: convert a 16-bit wide character to narrow multibyte string Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) |
| (C++11) |
генерации следующего 32-битный символ из узких строку многобайтовых Оригинал: generate the next 32-bit wide character from a narrow multibyte string Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) |
| (C++11) |
Преобразование 32-битного широкий характер, чтобы сузить многобайтовую строку Оригинал: convert a 32-bit wide character to narrow multibyte string Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (функция) |
[править] Типы
| Заголовочный файл
<cwchar> | |
| Преобразование информации о состоянии необходимой для перебора многобайтовые строки символов Оригинал: conversion state information necessary to iterate multibyte character strings Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (класс) | |
[править] Макросы
| Заголовочный файл
<climits> | |
| MB_LEN_MAX |
Максимальное число байтов в многобайтовых символах Оригинал: maximum number of bytes in a multibyte character Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (константа-макрос) |
| Заголовочный файл
<cstdlib> | |
| MB_CUR_MAX |
Максимальное число байтов в многобайтовых символов в текущем C locale
(макропеременной) Оригинал: maximum number of bytes in a multibyte character in the current C locale (макропеременной) Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
| Заголовочный файл
<cuchar> | |
| __STDC_UTF_16__ |
указывает, что в функциях mbrtoc16 и c16rtomb используется кодировка UTF-16 (константа-макрос) |
| __STDC_UTF_32__ |
указывает, что в функциях mbrtoc32 и c32rtomb используется кодировка UTF-32 (константа-макрос) |

