mbsrtowcs_s
Geçerli yerel bir çoklu bayt karakter dizesini kendi geniş karakter dize gösterimi için dönüştürün.Bir sürümünü mbsrtowcs açıklandığı gibi güvenlik geliştirmeleri ile CRT'deki Güvenlik Özellikleri.
errno_t mbsrtowcs_s( size_t * pReturnValue, wchar_t * wcstr, size_t sizeInWords, const char ** mbstr, size_t count, mbstate_t * mbstate ); template <size_t size> errno_t mbsrtowcs_s( size_t * pReturnValue, wchar_t (&wcstr)[size], const char ** mbstr, size_t count, mbstate_t * mbstate ); // C++ only
Parametreler
[dışı]pReturnValue
Dönüştürülen karakter sayısı.[dışı]wcstr
Dönüştürülen geniş karakter dizesi sonucu depolamak için arabellek adresidir.[dışı]sizeInWords
Boyutunu wcstr sözcükleri (geniş karakterler) içinde.[içinde out]mbstr
Dönüştürülecek çoklu bayt karakter dizesi konumunu dolaylı işaretçisi.[in]count
Depolamak için geniş karakterler sayısının wcstr arabellek sonlandırma null hariç, veya _TRUNCATE.[içinde out]mbstate
Bir işaretçi bir mbstate_t dönüştürme durum nesnesi.Bu değer null bir işaretçi ise, bir statik iç dönüştürme durumu nesnesi kullanılır.Çünkü iç mbstate_t nesne iş parçacığı güvenli değil, size her zaman kendi geçirmenizi öneririz mbstate parametresi.
Dönüş Değeri
Dönüştürme başarılı olursa sıfır veya bir hata kodu hatası.
Hata durumu |
Dönüş değeri veerrno |
---|---|
wcstrnull bir işaretçidir ve sizeInWords > 0 |
EINVAL |
mbstrnull bir işaretçidir |
EINVAL |
Dize dolaylı olarak işaret için tarafından mbstr geçerli yerel ayarı için geçerli olmayan bir çoklu bayt dizisi içeriyor. |
EILSEQ |
Hedef arabelleği dönüştürülmüş dizeyi için çok küçük (sürece count olan _TRUNCATE; daha fazla bilgi için açıklamalar bakın) |
ERANGE |
Bu koşullardan biri oluştuğunda geçersiz parametre özel durum açıklandığı gibi çağrılır Parametre Doğrulama .Devam etmek için yürütme izin verildiyse, işlevi bir hata kodu döndürür ve ayarlar errno tabloda belirtildiği gibi.
Notlar
mbsrtowcs_s İşlevi dönüştürür dolaylı olarak işaret çoklu bayt karakter dizesi mbstr tarafından işaret arabellek içinde depolanan geniş karakterler içine wcstr, bulunan dönüştürme durumu kullanarak mbstate.Bu koşullardan biri gelene dek dönüştürme her karakter için devam eder:
Bir çoklu bayt null karakteriyle karşılaşıldı
Geçersiz bir çoklu bayt karakteriyle karşılaşıldı
İçinde depolanan geniş karakter sayısını wcstr arabelleğe eşittir count.
Hedef dize wcstr her zaman null bir hata durumunda bile, sonlandırılır sürece wcstr null bir işaretçidir.
Varsa count özel değeri _TRUNCATE, mbsrtowcs_s dönüştürür büyük bir dize olacak olarak yine de null Sonlandırıcı yer bırakarak hedef arabelleğine Sığdır.
Varsa mbsrtowcs_s başarıyla kaynak dizesi dönüştürür dönüştürülmüş dizeyi ve içine null Sonlandırıcı geniş karakter cinsinden boyutu koyar *pReturnValue, sağlanan pReturnValue null bir işaretçi değil.Bu gerçekleşir bile wcstr bağımsız değişkeni null bir işaretçidir ve gerekli arabellek boyutunu belirlemenize olanak tanır.Unutmayın wcstr null bir işaretçi count göz ardı edilir.
Varsa wcstr null bir işaretçi değil tarafından için işaretçiyi nesne işaret mbstr sonlandırma boş karakter ulaştığından dönüştürme durmuşsa null bir işaretçi atanır.Aksi takdirde, varsa, son çoklu bayt karakter dönüştürülüp, adresi yalnızca geçmiş atanır.Bu, bir sonraki işlev çağrısı dönüştürme yeniden başlatmak bu çağrı durduğu sağlar.
Varsa mbstate bir null, iç kitaplık işaretçidir mbstate_t dönüştürme durumu statik nesnesi kullanılır.Bu iç statik nesne iş parçacığı güvenli olmadığından, kendi geçirmenizi öneririz mbstate değeri.
Varsa mbsrtowcs_s geçerli yerel ayarı, geçerli olmayan bir çoklu bayt karakter karşılaştığında -1 koyar *pReturnValue, hedef arabelleği ayarlar wcstr boş bir dize olarak ayarlar errno için EILSEQve döndürür EILSEQ.
Dizileri tarafından işaret ise mbstr ve wcstr çakışmaması, davranışını mbsrtowcs_s tanımlanmamıştır.mbsrtowcs_sGeçerli yerel LC_TYPE kategoriye göre etkilenir.
Güvenlik Notu |
---|
Olduğundan emin olmak wcstr ve mbstr üst üste ve count doğru şekilde dönüştürmek için çoklu bayt karakter sayısını yansıtır. |
mbsrtowcs_s İşlevi farklıdır mbstowcs_s, _mbstowcs_s_l kendi restartability tarafından.Dönüştürme durumu içinde depolanan mbstate sonraki çağrılar aynı veya diğer yeniden başlatılabilir işlevler için.Sonuçları yeniden başlatılabilir ve nonrestartable işlevleri kullanımını kullanırken tanımlanmamış.Örneğin, bir uygulama kullanması gereken mbsrlen yerine mbslen, bir sonraki çağrı, mbsrtowcs_s yerine kullanılırmbstowcs_s.
C++'da, bu işlevini kullanarak şablon aşırı tarafından Basitleştirilmiş; aşırı arabellek uzunluğu otomatik olarak anlamak (boyutu bağımsız değişkeni belirtmek için gereksinimini ortadan) ve bunlar otomatik olarak daha eski, güvenli olmayan işlevleri, daha yeni, güvenli'deki araçlara kullanarak değiştirir.Daha fazla bilgi için bkz. Güvenli Şablon Aşırı Yüklemeleri.
Özel Durumlar
mbsrtowcs_s İşlevdir çok iş parçacıklı güvenli geçerli iş parçacığının hiçbir işlev çağrıları sürece setlocale bu işlev yürütülmekte olduğu sürece ve mbstate bağımsız değişkeni null bir işaretçi değil.
.NET Framework Eşdeğeri
Uygulanamaz. Standart C işlevini çağırmak için PInvoke kullanın. Daha fazla bilgi için Platform çağırma örnekler.
Gereksinimler
Yordam |
Gerekli başlık |
---|---|
mbsrtowcs_s |
< wchar.h > |