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

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