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 и стойността на * ps е неуточнена.

Пример: Как работи функцията 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

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