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 mbstate
wchar
değerden tarafından temsil edilen mbchar
adrese 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_l
wctomb
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
kullanır wcsrlen
wcsnlen
.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