Aracılığıyla paylaş


mbsrtowcs

Geçerli yerel ayardaki çok baytlı karakter dizesini, çok baytlı bir karakterin ortasında yeniden başlatma özelliğiyle karşılık gelen geniş karakter dizesine dönüştürür. Bu işlevin daha güvenli bir sürümü kullanılabilir; bkz mbsrtowcs_s. .

Sözdizimi

size_t mbsrtowcs(
   wchar_t *wcstr,
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
);
template <size_t size>
size_t mbsrtowcs(
   wchar_t (&wcstr)[size],
   const char **mbstr,
   sizeof count,
   mbstate_t *mbstate
); // C++ only

Parametreler

wcstr
Sonuçta dönüştürülen geniş karakter dizesini depolamak için adres.

mbstr
Dönüştürülecek çok baytlı karakter dizesinin konumuna dolaylı işaretçi.

count
dönüştürülecek ve içinde wcstrdepolanmaya yönelik en fazla karakter sayısı (bayt değil).

mbstate
Dönüştürme durumu nesnesinin mbstate_t işaretçisi. Bu değer null bir işaretçiyse, statik bir iç dönüştürme durumu nesnesi kullanılır. İç mbstate_t nesne iş parçacığı açısından güvenli olmadığından her zaman kendi mbstate parametrenizi geçirmenizi öneririz.

Dönüş değeri

Varsa, sonlandırıcı null karakteri dahil değil, başarıyla dönüştürülen karakter sayısını döndürür. Hata oluştuysa (size_t)(-1) döndürür ve olarak EILSEQayarlanırerrno.

Açıklamalar

işlevi, mbsrtowcs içinde yer alan mbstatedönüştürme durumunu kullanarak, tarafından dolaylı olarak işaret edilen mbstrçok baytlı karakterlerden oluşan bir dizeyi, tarafından wcstrişaret edilen arabellekte depolanan geniş karakterlere dönüştürür. Sonlandırıcı null çok baytlı karakterle karşılaşılana, geçerli yerel ayarda geçerli bir karaktere karşılık gelen çok baytlı bir diziyle karşılaşılana veya karakterler dönüştürülene kadar count dönüştürme işlemi her karakter için devam eder. Çok baytlı null karakterle ('\0') daha önce veya oluştuğunda count karşılaşırsambsrtowcs, bunu null karakteri sonlandıran 16 bit'e dönüştürür ve durur.

Bu nedenle, konumundaki wcstr geniş karakter dizesi null olarak sonlandırılır ancak dönüştürme sırasında çok baytlı null karakterle karşılaşırsa mbsrtowcs . Tarafından işaret edilen mbstr ve wcstr çakışan diziler, davranışı mbsrtowcs tanımlanmamıştır. mbsrtowcs geçerli yerel ayarın LC_TYPE kategorisinden etkilenir.

İşlev, mbsrtowcs yeniden başlatılabilirliğine göre işlevinden _mbstowcs_lmbstowcs farklıdır. Dönüştürme durumu, aynı veya diğer yeniden başlatılabilir işlevlere yapılan sonraki çağrılar için içinde mbstate depolanır. Yeniden başlatılabilir ve yeniden başlatılamayan işlevlerin kullanımı karıştırılırken sonuçlar tanımlanmamıştır. Örneğin, yerine sonraki bir çağrısı kullanılıyorsa, bir uygulama yerine mbstowcskullanmalıdır mbsrlenmbslen.mbsrtowcs

Null işaretçi değilse wcstr , tarafından işaret edilen işaretçi nesnesine mbstr , sonlandırıcı bir null karaktere ulaşıldığı için dönüştürme durdurulursa null işaretçi atanır. Aksi takdirde, adrese dönüştürülen son çok baytlı karakterin hemen sonundan (varsa) atanır. Bu çağrının durdurulduğu dönüştürmeyi yeniden başlatmak için sonraki bir işlev çağrısına izin verir.

wcstr Bağımsız değişken null işaretçiyse, count bağımsız değişken yoksayılır ve mbsrtowcs hedef dize için geniş karakter cinsinden gerekli boyutu döndürür. Boş bir işaretçiyse mbstate , işlev iş parçacığı güvenli olmayan bir statik iç mbstate_t dönüştürme durumu nesnesi kullanır. Karakter dizisinde mbstr karşılık gelen çok baytlı karakter gösterimi yoksa, -1 döndürülür ve errno olarak EILSEQayarlanır.

Boş bir işaretçiysembstr, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlev olarak EINVAL ayarlanır errno ve -1 döndürür.

C++'ta, bu işlevin daha yeni, güvenli karşılık gelenini çağıran bir şablon aşırı yüklemesi vardır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

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.

Özel durumlar

İşlevmbsrtowcs, geçerli iş parçacığında işlev yürütülürken bağımsız mbstate değişken null işaretçi olmadığı sürece çok iş parçacıklı setlocale güvenlidir.

Gereksinimler

Yordam Gerekli başlık
mbsrtowcs <wchar.h>

Ayrıca bkz.

Veri dönüştürme
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması
mbrtowc
mbtowc, _mbtowc_l
mbstowcs, _mbstowcs_l
mbsinit