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. 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