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

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

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

mbrtoc16 () prototip

 size_t mbrtoc16 (char16_t * pc16, const char * s, size_t n, mbstate_t * ps);

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

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

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

mbrtoc16 () Parametreler

  • pc16: Ortaya çıkan 16 bit karakteri saklamak 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.

mbrtoc16 () Dönüş değeri

Mbrtoc16 () 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.
  • 16 bit karaktere başarıyla dönüştürülen çok baytlı karakterin bayt sayısı (en fazla n).
  • -3 char16_tmulti-char16_t karakterinden sonraki (örneğin bir vekil çifti) şimdi * pc16'ya yazıldıysa. 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 * pc16'ya hiçbir şey yazılmaz.
  • Kodlama hatası oluşursa -1. Bu durumda hiçbir şey * PC16 yazılır, errno olarak ayarlanır EILSEQ ve PS * değeri belirtilmemiş olduğunu.

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

 #include #include #include #include using namespace std; int main(void) ( char16_t pc16; char s() = "x" ; mbstate_t ps(); int length; length = mbrtoc16(&pc16, s, MB_CUR_MAX, &ps); if (length < 0) ( perror("mbrtoc16() fails to convert"); exit(-1); ) cout << "Multibyte string = " << s << endl; cout << "Length = " << length << endl; printf ("16-bit character = 0x%04hx", pc16); return 0; )

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

 Çok baytlı dizge = x Uzunluk> h = 1 16 bit karakter = 0x0078

Ilginç makaleler...