C ++ mbrlen () - C ++ Standart Kitaplığı

C ++ 'daki mbrlen () işlevi, çok baytlı bir karakterin bayt cinsinden boyutunu belirler.

Mbrlen () işlevi başlık dosyasında tanımlanmıştır.

mbrlen () prototipi

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

Mbrlen () işlevi, ilk baytı s ile gösterilen dizeyi inceler ve geçerli dönüştürme durumu ps için bayt cinsinden boyutunu belirler. S cinsinden en çok n bayt incelenir.

mbrlen () Parametreleri

  • s: İncelenecek çok baytlı dizenin ilk baytının işaretçisi.
  • n: s cinsinden incelenecek maksimum bayt sayısı.
  • ps: Bir dönüşüm durumunu tanımlayan mbstate_t nesnesine işaretçi.

mbrlen () Dönüş değeri

Mbrlen () işlevi şunu döndürür:

  • Geçerli bir çok baytlı karakteri tamamlayan bayt sayısı.
  • 0 eğer s boş karakteri gösterir.
  • -1, kodlama hatası oluşur.
  • Sonraki n bayt tam bir çok baytlı karakteri temsil etmiyorsa -2.

Örnek: mbrlen () işlevi nasıl çalışır?

 #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; )

Programı çalıştırdığınızda, çıktı:

 Sonraki 1 bayt tam bir çok baytlı karakteri temsil etmiyor Sonraki 5 bayt µ, 2 bayt çok baytlı karakter içeriyor

Ilginç makaleler...