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 і значення * пс не визначене.

Приклад: Як працює функція 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

Цікаві статті...