wcrtomb_s
Geniş bir karakteri çok baytlı karakter gösterimine dönüştürün. CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri içeren sürümüwcrtomb
.
Sözdizimi
errno_t wcrtomb_s(
size_t *pReturnValue,
char *mbchar,
size_t sizeOfmbchar,
wchar_t *wchar,
mbstate_t *mbstate
);
template <size_t size>
errno_t wcrtomb_s(
size_t *pReturnValue,
char (&mbchar)[size],
wchar_t *wchar,
mbstate_t *mbstate
); // C++ only
Parametreler
pReturnValue
Yazılan bayt sayısını veya hata oluşursa -1 değerini döndürür.
mbchar
Sonuçta elde edilen çok baytlı dönüştürülmüş karakter.
sizeOfmbchar
Değişkenin mbchar
bayt cinsinden boyutu.
wchar
Dönüştürülecek geniş bir karakter.
mbstate
Nesne işaretçisi mbstate_t
.
Dönüş değeri
Hata oluşursa sıfır veya errno
değer döndürür.
Açıklamalar
wcrtomb_s
işlevi, içinde bulunan belirtilen dönüştürme durumundan başlayarak, içinde bulunan mbstate
wchar
değerden tarafından temsil edilen mbchar
adrese geniş bir karakter dönüştürür. Değer pReturnValue
, dönüştürülen bayt sayısıdır, ancak bayttan MB_CUR_MAX
fazla olmaz veya hata oluşursa -1 olur.
Null ise mbstate
, iç mbstate_t
dönüştürme durumu kullanılır. içinde wchar
bulunan karakterin karşılık gelen çok baytlı bir karakteri yoksa değeri pReturnValue
-1 olur ve işlevi değerini EILSEQ
döndürürerrno
.
İşlev, wcrtomb_s
yeniden başlatılabilirliğine göre işlevinden _wctomb_s_l
wctomb_s
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ıldıysa, bir uygulama yerine wcstombs_s
kullanır wcsrlen
wcslen
.wcsrtombs_s
C++'ta bu işlevin kullanılması şablon aşırı yüklemeleriyle basitleştirilmiştir; aşırı yüklemeler arabellek uzunluğunu otomatik olarak çıkarabilir (boyut bağımsız değişkeni belirtme gereksinimini ortadan kaldırır) ve eski, güvenli olmayan işlevleri yeni ve güvenli karşılıklarıyla otomatik olarak değiştirebilir. 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
Bu wcrtomb_s
işlev yürütülürken geçerli iş parçacığı setlocale
çağrılarında işlev olmadığı ve mbstate
null olduğu sürece işlev çok iş parçacıklı güvenlidir.
Örnek
// crt_wcrtomb_s.c
// This program converts a wide character
// to its corresponding multibyte character.
//
#include <string.h>
#include <stdio.h>
#include <wchar.h>
int main( void )
{
errno_t returnValue;
size_t pReturnValue;
mbstate_t mbstate;
size_t sizeOfmbStr = 1;
char mbchar = 0;
wchar_t* wchar = L"Q\0";
// Reset to initial conversion state
memset(&mbstate, 0, sizeof(mbstate));
returnValue = wcrtomb_s(&pReturnValue, &mbchar, sizeof(char),
*wchar, &mbstate);
if (returnValue == 0) {
printf("The corresponding wide character \"");
wprintf(L"%s\"", wchar);
printf(" was converted to a the \"%c\" ", mbchar);
printf("multibyte character.\n");
}
else
{
printf("No corresponding multibyte character "
"was found.\n");
}
}
The corresponding wide character "Q" was converted to a the "Q" multibyte character.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
wcrtomb_s |
<wchar.h> |
Ayrıca bkz.
Veri dönüştürme
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması
mbsinit