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