Aracılığıyla paylaş


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 sourceherhangi 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_bytesarası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 destinationhiç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 destinationhiç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 destinationdepolar. 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 mbrtoc16ayarlanı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 "" destinationkullanılarak yapılan çağrının eşdeğerini (boş, null ile sonlandırılan dize) ve için sourcemax_bytes1 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