C ++ mbrtoc32 () - Стандартна бібліотека C ++

Функція mbrtoc32 () в C ++ перетворює вузький багатобайтовий символ у 32-бітове представлення символів.

Функція mbrtoc32 () визначена у файлі заголовка.

прототип mbrtoc32 ()

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

Функція mbrtoc32 () перетворює щонайбільше n багатобайтових символів, представлених символом s, у свій еквівалентний символ utf-32 і зберігає його в пам'яті, на яку вказує pc32.

Якщо s являє собою нульовий покажчик, значення n та pc32 ігноруються, а виклик до еквівалентний mbrtoc32(NULL, "", 1, ps).

Якщо результуючий символ, що створюється, дорівнює нулю, стан перетворення * ps представляє початковий стан зсуву.

Параметри mbrtoc32 ()

  • pc32: вказівник на місце в пам'яті для зберігання результуючого 32-бітного символу.
  • s: вказівник на багатобайтовий символ для перетворення.
  • n: Максимальна кількість байт в s для перетворення.
  • ps: вказівник на об'єкт mbstate_t, який використовується при інтерпретації багатобайтового рядка.

mbrtoc32 () Повернене значення

Функція mbrtoc32 () повертає перше із наведеного нижче значення, яке відповідає наведеним нижче випадкам:

  • 0, якщо перетворений символ є нульовим символом.
  • кількість байт (щонайбільше n) багатобайтового символу, який було успішно перетворено в 32-бітний символ.
  • -3, якщо наступний char32_tіз символу multi-char32_t (наприклад, сурогатна пара) тепер записаний на * pc32. У цьому випадку байти не обробляються з вводу.
  • -2, якщо наступні n байтів становлять неповний, але поки що дійсний багатобайтовий символ. У цьому випадку на * pc32 нічого не записується.
  • -1, якщо виникає помилка кодування. У цьому випадку нічого не написано на * pc32, ERRNO встановлюється в EILSEQ і значення * пс не визначене.

Приклад: Як працює функція mbrtoc32 ()?

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

Коли ви запускаєте програму, результат буде:

 Багатобайтовий рядок = x довжина = 1 32-розрядний символ = 0x00000078

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