C ++ mbrlen () - C ++ standardowa biblioteka

Funkcja mbrlen () w C ++ określa rozmiar w bajtach znaku wielobajtowego.

Funkcja mbrlen () jest zdefiniowana w pliku nagłówkowym.

prototyp mbrlen ()

 size_t mbrlen (const char * s, size_t n, mbstate_t * ps);

Funkcja mbrlen () bada łańcuch, którego pierwszy bajt wskazuje si, i określa jego rozmiar w bajtach dla bieżącego stanu konwersji ps. Sprawdzane jest co najwyżej n bajtów w s.

mbrlen () Parametry

  • s: wskaźnik do pierwszego bajtu ciągu wielobajtowego do zbadania.
  • n: Maksymalna liczba bajtów w s do zbadania.
  • ps: wskaźnik do obiektu mbstate_t, który definiuje stan konwersji.

mbrlen () Zwracana wartość

Funkcja mbrlen () zwraca:

  • Liczba bajtów, które uzupełniają prawidłowy znak wielobajtowy.
  • 0, jeśli s wskazuje na znak pusty.
  • -1 oznacza błąd kodowania.
  • -2, jeśli następne n bajtów nie reprezentuje pełnego znaku wielobajtowego.

Przykład: Jak działa funkcja 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; )

Po uruchomieniu programu wynik będzie następujący:

 Następny 1 bajt nie reprezentuje pełnego znaku wielobajtowego Kolejne 5 bajtów µ zawiera 2 bajty znaku wielobajtowego

Interesujące artykuły...