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_t
multi-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