Функция mbrlen () в C ++ определяет размер в байтах многобайтового символа.
Функция mbrlen () определена в заголовочном файле.
mbrlen () прототип
size_t mbrlen (const char * s, size_t n, mbstate_t * ps);
Функция mbrlen () проверяет строку, на первый байт которой указывает s, и определяет ее размер в байтах для текущего состояния преобразования ps. Проверяется не более n байтов в s.
Параметры mbrlen ()
- s: указатель на первый байт многобайтовой строки для проверки.
- n: Максимальное количество байтов в s для проверки.
- ps: указатель на объект mbstate_t, который определяет состояние преобразования.
mbrlen () Возвращаемое значение
Функция mbrlen () возвращает:
- Число байтов, завершающих допустимый многобайтовый символ.
- 0, если s указывает на нулевой символ.
- -1 - ошибка кодирования.
- -2, если следующие n байтов не представляют собой полный многобайтовый символ.
Пример: как работает функция mbrlen ()?
#include #include #include using namespace std; void test_mbrlen(const char *s, size_t n) ( mbstate_t ps = mbstate_t(); int retVal = mbrlen(s, n, &ps); if (retVal == -2) cout << "Next " << n << " byte(s) doesn't represent a complete multibyte character" << endl; else if (retVal == -1) cout << "Next " << n << " byte(s) doesn't represent a valid multibyte character" << endl; else cout << "Next " << n << " byte(s) of " << s << " holds " << retVal << " byof multibyte character" << endl; ) int main() ( setlocale(LC_ALL, "en_US.utf8"); char str() = "u00b5"; test_mbrlen(str, 1); test_mbrlen(str, 5); return 0; )
Когда вы запустите программу, вывод будет:
Следующий 1 байт (-а) не представляет собой полный многобайтовый символ Следующие 5 байтов (-ов) из µ содержат 2 байта многобайтового символа