Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 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