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

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