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 wcstr
depolanmaya 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 EILSEQ
ayarlanırerrno
.
Açıklamalar
işlevi, mbsrtowcs
içinde yer alan mbstate
dönüştürme durumunu kullanarak, tarafından dolaylı olarak işaret edilen mbstr
çok baytlı karakterlerden oluşan bir dizeyi, tarafından wcstr
iş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_l
mbstowcs
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 mbstowcs
kullanmalıdır mbsrlen
mbslen
.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 EILSEQ
ayarlanı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