C ++ mbrtoc16 () - Стандартная библиотека C ++

Функция mbrtoc16 () в C ++ преобразует узкий многобайтовый символ в 16-битное символьное представление.

Функция mbrtoc16 () определена в заголовочном файле.

mbrtoc16 () прототип

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

Функция mbrtoc16 () преобразует не более n многобайтовых символов, представленных s, в эквивалентный символ utf-16 и сохраняет его в ячейке памяти, на которую указывает pc16.

Если s представляет собой нулевой указатель, значения n и pc16 игнорируются, а вызов эквивалентен mbrtoc16 (NULL, "", 1, ps).

Если полученный в результате символ является нулевым, состояние преобразования * ps представляет начальное состояние сдвига.

Параметры mbrtoc16 ()

  • pc16: указатель на ячейку памяти для хранения результирующего 16-битного символа.
  • s: указатель на многобайтовый символ для преобразования.
  • n: Максимальное количество байтов в s для преобразования.
  • ps: указатель на объект mbstate_t, используемый при интерпретации многобайтовой строки.

mbrtoc16 () Возвращаемое значение

Функция mbrtoc16 () возвращает первое из следующих значений, соответствующих приведенным ниже случаям:

  • 0, если преобразованный символ является нулевым символом.
  • количество байтов (не более n) многобайтового символа, который был успешно преобразован в 16-битный символ.
  • -3, если следующий char16_tиз символа multi-char16_t (например, суррогатная пара) теперь записан в * pc16. В этом случае байты ввода не обрабатываются.
  • -2, если следующие n байтов составляют неполный, но пока действительный многобайтовый символ. В этом случае в * pc16 ничего не записывается.
  • -1 в случае ошибки кодирования. В этом случае в * pc16 ничего не записывается, для errno устанавливается значение EILSEQ, а значение * ps не указано.

Пример: как работает функция mbrtoc16 ()?

 #include #include #include #include using namespace std; int main(void) ( char16_t pc16; char s() = "x" ; mbstate_t ps(); int length; length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc16() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("16-bit character = 0x%04hx", pc16); return 0; )

Когда вы запустите программу, вывод будет:

 Многобайтовая строка = x Длина> h = 1 16-битный символ = 0x0078

Интересные статьи...