Aracılığıyla paylaş


wcrtomb

Geniş bir karakteri çok baytlı karakter gösterimine dönüştürün. Bu işlevin daha güvenli bir sürümü kullanılabilir; bkz wcrtomb_s. .

Sözdizimi

size_t wcrtomb(
   char *mbchar,
   wchar_t wchar,
   mbstate_t *mbstate
);
template <size_t size>
size_t wcrtomb(
   char (&mbchar)[size],
   wchar_t wchar,
   mbstate_t *mbstate
); // C++ only

Parametreler

mbchar
Sonuçta elde edilen çok baytlı dönüştürülmüş karakter.

wchar
Dönüştürülecek geniş bir karakter.

mbstate
Nesne işaretçisi mbstate_t .

Dönüş değeri

Dönüştürülen çok baytlı karakteri temsil etmek için gereken bayt sayısını döndürür; aksi takdirde bir hata oluşursa -1 döndürür.

Açıklamalar

wcrtomb 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. Dönüş değeri, karşılık gelen çok baytlı karakteri temsil etmek için gereken bayt sayısıdır, ancak bayttan MB_CUR_MAX fazla döndürmez.

null isembstate, dönüştürme durumunu mbchar içeren iç mbstate_t nesne kullanılır. Karakter dizisinde wchar karşılık gelen çok baytlı karakter gösterimi yoksa, -1 döndürülür ve errno olarak ayarlanır EILSEQ.

İşlev, wcrtomb yeniden başlatılabilirliğine göre işlevinden _wctomb_lwctomb 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 wcstombskullanır wcsrlenwcsnlen.wcsrtombs

C++ dilinde, bu işlevin daha yeni, güvenli karşılıklarını ç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

Bu wcrtomb işlev yürütülürken ve mbstate null olduğunda geçerli iş parçacığında işlev çağrıları setlocale olmadığı sürece işlev çok iş parçacıklı güvenlidir.

Örnek

// crt_wcrtomb.c
// compile with: /W3
// This program converts a wide character
// to its corresponding multibyte character.

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
    size_t      sizeOfCovertion = 0;
    mbstate_t   mbstate;
    char        mbStr = 0;
    wchar_t*    wcStr = L"Q";

    // Reset to initial conversion state
    memset(&mbstate, 0, sizeof(mbstate));

    sizeOfCovertion = wcrtomb(&mbStr, *wcStr, &mbstate); // C4996
    // Note: wcrtomb is deprecated; consider using wcrtomb_s instead
    if (sizeOfCovertion > 0)
    {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wcStr);
        printf(" was converted to the \"%c\" ", mbStr);
        printf("multibyte character.\n");
    }
    else
    {
        printf("No corresponding multibyte character "
               "was found.\n");
    }
}
The corresponding wide character "Q" was converted to the "Q" multibyte character.

Gereksinimler

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

Ayrıca bkz.

Veri dönüştürme
Yerel ayar
Çok baytlı karakter dizilerinin yorumlanması
mbsinit