mbrtoc16
, mbrtoc32
Dizedeki ilk UTF-8 çok baytlı karakteri eşdeğer UTF-16 veya UTF-32 karakterine çevirir.
Sözdizimi
size_t mbrtoc16(
char16_t* destination,
const char* source,
size_t max_bytes,
mbstate_t* state
);
size_t mbrtoc32(
char32_t* destination,
const char* source,
size_t max_bytes,
mbstate_t* state
);
Parametreler
destination
Dönüştürülecek char16_t
UTF-8 çok baytlı karakterin veya char32_t
eşdeğerinin işaretçisi. Null ise işlev bir değer depolamaz.
source
Dönüştürülecek UTF-8 çok baytlı karakter dizesi işaretçisi.
max_bytes
Bir karakterin dönüştürülmesi için incelenmesi gereken bayt source
sayısı üst sınırı. Bu bağımsız değişken, içinde kalan source
herhangi bir null sonlandırıcı da dahil olmak üzere bir ile bayt sayısı arasında bir değer olmalıdır.
state
UTF-8 çok baytlı dizeyi bir veya daha fazla çıkış karakterine yorumlamak için kullanılan dönüştürme mbstate_t
durumu nesnesi işaretçisi.
Dönüş değeri
Başarılı olduğunda, geçerli state
değer göz önünde bulundurularak bu koşullardan ilkinin değerini döndürür:
Değer | Koşul |
---|---|
0 | 'den source dönüştürülen sonraki max_bytes veya daha az karakter null geniş karaktere karşılık gelir; bu, null değilse destination depolanan değerdir.state ilk vardiya durumunu içerir. |
1 ile max_bytes arasında (dahil) |
Döndürülen değer, geçerli bir çok baytlı karakteri tamamlayan bayt source sayısıdır. Dönüştürülen geniş karakter null değilse destination depolanır. |
-3 | İşleve yapılan önceki bir çağrıdan kaynaklanan sonraki geniş karakter null değilse destination içinde destination depolanmıştır. İşleve yapılan bu çağrı tarafından hiçbir bayt source tüketilmemiş.Temsil etmek için birden fazla geniş karakter gerektiren utf-8 çok baytlı bir karaktere işaret ettiğinde source (örneğin, vekil çift), değer state bir sonraki işlev çağrısının fazladan karakteri yazması için güncelleştirilir. |
-2 | Sonraki max_bytes baytlar eksik, ancak potansiyel olarak geçerli olan UTF-8 çok baytlı bir karakteri temsil eder. içinde destination hiçbir değer depolanmaz. Bu sonuç sıfır olduğunda max_bytes ortaya çıkabilir. |
-1 | Bir kodlama hatası oluştu. Sonraki max_bytes veya daha az bayt, tam ve geçerli bir UTF-8 çok baytlı karaktere katkıda bulunmaz. içinde destination hiçbir değer depolanmaz.EILSEQ içinde depolanır errno ve dönüştürme durumu değeri state belirtilmez. |
Açıklamalar
mbrtoc16
İşlev, ilk tam, geçerli UTF-8 çok baytlı karakteri bulmak için bayt sayısı kadar max_bytes
source
okur ve ardından eşdeğer UTF-16 karakterini içinde destination
depolar. Karakter vekil çifti gibi birden fazla UTF-16 çıkış karakteri gerektiriyorsa, state
değeri sonraki UTF-16 karakterini sonraki çağrısında destination
depolamak için mbrtoc16
ayarlanır. mbrtoc32
İşlev aynıdır, ancak çıkış UTF-32 karakteri olarak depolanır.
Null isesource
, bu işlevler için bağımsız değişkenleri NULL
""
destination
kullanılarak yapılan çağrının eşdeğerini (boş, null ile sonlandırılan dize) ve için source
max_bytes
1 döndürür. geçirilen ve max_bytes
değerleri destination
yoksayılır.
Null değilse source
, işlev dizenin başında başlar ve herhangi bir vardiya dizisi de dahil olmak üzere sonraki UTF-8 çok baytlı karakteri tamamlamak için gereken bayt sayısını belirlemek için bayt sayısı kadar inceler max_bytes
. İncelenen baytlar geçerli ve eksiksiz bir UTF-8 çok baytlı karakter içeriyorsa, işlev karakteri eşdeğer 16 bit veya 32 bit genişliğindeki karaktere veya karakterlere dönüştürür. destination
null değilse, işlev ilk (ve muhtemelen yalnızca) sonuç karakterini hedefte depolar. Ek çıkış karakterleri gerekiyorsa, işlevine yapılan sonraki çağrıların fazladan karakterlerin çıkışını alıp -3 değerini döndürmesi için içinde bir değer ayarlanır state
. Daha fazla çıkış karakteri gerekmiyorsa, state
ilk vardiya durumuna ayarlanır.
UTF-8 olmayan çok baytlı karakterleri UTF-16 LE karakterlerine dönüştürmek için , mbtowc veya _mbtowc_l işlevlerini kullanınmbrtowc
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
İşlev | C üst bilgisi | C++ üst bilgisi |
---|---|---|
mbrtoc16 , mbrtoc32 |
<uchar.h> | <cuchar> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Ayrıca bkz.
Veri dönüştürme
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması
c16rtomb
, c32rtomb
mbrtowc
mbsrtowcs
mbsrtowcs_s