Aracılığıyla paylaş


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 mbstatewchardeğerden tarafından temsil edilen mbcharadrese 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 EILSEQdöndürürerrno.

İşlev, wcrtomb_s yeniden başlatılabilirliğine göre işlevinden _wctomb_s_lwctomb_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_skullanı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