C ++ mbrlen () - standardní knihovna C ++

Funkce mbrlen () v C ++ určuje velikost vícebajtového znaku v bajtech.

Funkce mbrlen () je definována v hlavičkovém souboru.

mbrlen () prototyp

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

Funkce mbrlen () zkoumá řetězec, na jehož první bajt odkazuje s, a určuje jeho velikost v bajtech pro aktuální stav převodu ps. Je zkoumáno maximálně n bajtů v s.

Parametry mbrlen ()

  • s: Ukazatel na první bajt vícebajtového řetězce k prozkoumání.
  • n: MAXimální počet bajtů v s k prozkoumání.
  • ps: Ukazatel na objekt mbstate_t, který definuje stav převodu.

mbrlen () Vrátit hodnotu

Funkce mbrlen () vrací:

  • Počet bytů, které dokončují platný vícebajtový znak.
  • 0, pokud s ukazuje na nulový znak.
  • -1 je chyba kódování.
  • -2, pokud dalších n bajtů nepředstavuje úplný vícebajtový znak.

Příklad: Jak funguje funkce 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; )

Když spustíte program, výstup bude:

 Další 1 bajt nepředstavuje úplný vícebajtový znak Dalších 5 bajtů µ obsahuje 2 bajty vícebajtového znaku

Zajímavé články...