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

C ++ 'daki mbrtoc32 () işlevi, dar çok baytlı bir karakteri 32 bitlik bir karakter gösterimine dönüştürür.

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

mbrtoc32 () prototip

 size_t mbrtoc32 (char32_t * pc32, const char * s, size_t n, mbstate_t * ps);

Mbrtoc32 () işlevi, s ile temsil edilen en çok n çok baytlı karakteri eşdeğer utf-32 karakterine dönüştürür ve pc32 ile gösterilen bellek konumunda depolar.

S bir boş göstericiyi temsil ediyorsa, n ve pc32'nin değerleri yok sayılır ve çağrısı ile eşdeğerdir mbrtoc32(NULL, "", 1, ps).

Ortaya çıkan karakter boş ise, dönüştürme durumu * ps, ilk kaydırma durumunu temsil eder.

mbrtoc32 () Parametreler

  • pc32: Ortaya çıkan 32 bit karakteri depolamak için bellek konumuna işaretçi.
  • s: Dönüştürülecek çok baytlı karakterin işaretçisi.
  • n: s cinsinden dönüştürülecek maksimum bayt sayısı.
  • ps: Çok baytlı dizeyi yorumlarken kullanılan bir mbstate_t nesnesine işaretçi.

mbrtoc32 () Dönüş değeri

Mbrtoc32 () işlevi, aşağıdaki durumlarla eşleşen aşağıdaki değerden ilkini döndürür:

  • Dönüştürülen karakter bir boş karakter ise 0.
  • 32 bit karaktere başarıyla dönüştürülen çok baytlı karakterin bayt sayısı (en fazla n).
  • -3 char32_tmulti-char32_t karakterinden sonraki (örneğin bir vekil çifti) şimdi * pc32'ye yazılırsa. Bu durumda girdiden hiçbir bayt işlenmez.
  • Sonraki n bayt eksik, ancak şimdiye kadar geçerli, çok baytlı bir karakter oluşturuyorsa -2. Bu durumda * pc32'ye hiçbir şey yazılmaz.
  • Kodlama hatası oluşursa -1. Bu durumda hiçbir şey * PC32 yazılır, errno olarak ayarlanır EILSEQ ve PS * değeri belirtilmemiş olduğunu.

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

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

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

 Çok baytlı dizge = x Uzunluk = 1 32 bit karakter = 0x00000078

Ilginç makaleler...