Aracılığıyla paylaş


wcstombs_s, _wcstombs_s_l

Geniş bir karakter dizisi çok baytlı karakterlere karşılık gelen bir dizi dönüştürür.Bir sürümü wcstombs, _wcstombs_l açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.

errno_t wcstombs_s(
   size_t *pReturnValue,
   char *mbstr,
   size_t sizeInBytes,
   const wchar_t *wcstr,
   size_t count 
);
errno_t _wcstombs_s_l(
   size_t *pReturnValue,
   char *mbstr,
   size_t sizeInBytes,
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
errno_t wcstombs_s(
   size_t *pReturnValue,
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count 
); // C++ only
template <size_t size>
errno_t _wcstombs_s_l(
   size_t *pReturnValue,
   char (&mbstr)[size],
   const wchar_t *wcstr,
   size_t count,
   _locale_t locale
); // C++ only

Parametreler

  • [Çıkış]pReturnValue
    Dönüştürülen karakter sayısı.

  • [Çıkış]mbstr
    Sonuç dönüştürülen çok baytlı karakter dizesi için arabellek adresi.

  • [in]sizeInBytes
    Bayt olarak boyutu mbstr arabellek.

  • [in]wcstr
    Geniş karakter dizesine dönüştürmek için puan.

  • [in]count
    En fazla depolanması için geniş karakter sayısı mbstr arabellek Sonlandırıcı boş karakter dahil edilmez, ya da _TRUNCATE.

  • [in]locale
    Kullanılacak yerel ayarı.

Dönüş Değeri

Sıfır başarılı olursa, hata durumunda bir hata kodu.

Hata durumu

Dönüş değeri veerrno

mbstris NULL and sizeInBytes > 0

EINVAL

wcstrİşNULL

EINVAL

Hedef önbellek dönüştürülen karakter dizesi çok az. (sürece count olan _TRUNCATE; Aşağıdaki açıklamalar'a bakın)

ERANGE

Bu durumlardan herhangi biri meydana gelirse, geçersiz parametre özel durum açıklandığı şekilde çağrılır Parametre doğrulama .Yürütülmesine devam etmek için izin verilirse, işlevi bir hata kodu verir ve ayarlar errno tabloda belirtildiği gibi.

Notlar

wcstombs_s İşlevi tarafından gösterilen geniş karakterden oluşan bir dize dönüştürür wcstr göre sıralanmasını Arabellekte saklanan çok baytlı karakterleri içine mbstr.Bu koşullardan biri gerçekleşene kadar dönüştürme her karakter için devam eder:

  • Bir null karakteri karşılaştı

  • Dönüştürülemeyen bir geniş karakter karşılaştı

  • Depolanan bayt sayısını mbstr eşittir arabellek count.

Hedef her zaman (hatta bir hata durumunda) boş sonlandırılmış dizedir.

count Özel değeri _TRUNCATE, sonra wcstombs_s bir dize olarak kadarını dönüştürür null Sonlandırıcı oda bırakarak yine hedef arabelleğine sığacak.

wcstombs_s Başarıyla kaynak dize dönüştürür boyutunu bayt cinsinden dönüştürülmüş dizenin null Sonlandırıcı içine dahil koyar *pReturnValue (sağlanan pReturnValue değil NULL).Böyle olsa da, mbstr bağımsız değişkeni NULL ve gerekli arabellek boyutunu belirlemek için bir yol sağlar.Note that if mbstr is NULL, count is ignored.

wcstombs_s Çok baytlı bir karakter dönüştürme yapılamaz geniş bir karakter karşılaşır 0 koyar *pReturnValue, hedef arabellek boş bir dizeye ayarlar, ayarlar errno için EILSEQve EILSEQ.

Sıraları göre sıralanmasını, wcstr ve mbstr üst üste, davranışını wcstombs_s tanımlı değil.

Güvenlik NotuGüvenlik Notu

Emin wcstr ve mbstr üst üste ve count doğru şekilde dönüştürmek için geniş karakter sayısını yansıtır.

wcstombs_sGeçerli yerel ayarı herhangi bir yerel ayara bağımlı davranışını kullanır; _wcstombs_s_laynıdır wcstombs dışında bunun yerine geçirilen yerel ayarını kullanır.Daha fazla bilgi için bkz. Yerel ayar.

C++'da, bu işlevler tarafından şablon aşırı kolaylaştırılmıştır; aşırı arabellek uzunluğu otomatik olarak gerçekleştirip (size baðýmsýz deðiþkeni belirtmek gereğini ortadan kaldırır) ve bunlar otomatik olarak yeni, güvenli karşılıkları ile eski, güvenli olmayan işlevler değiştirebilirsiniz.Daha fazla bilgi için bkz. Güvenli şablon aşırı yükleme.

Gereksinimler

Yordamı

Gerekli başlık

wcstombs_s

<stdlib.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

Bu programın davranışını gösterilmektedir wcstombs_s işlevi.

// crt_wcstombs_s.c
// This example converts a wide character
// string to a multibyte character string.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

#define BUFFER_SIZE 100

int main( void )
{
    size_t   i;
    char      *pMBBuffer = (char *)malloc( BUFFER_SIZE );
    wchar_t*pWCBuffer = L"Hello, world.";

    printf( "Convert wide-character string:\n" );

    // Conversion
    wcstombs_s(&i, pMBBuffer, (size_t)BUFFER_SIZE, 
               pWCBuffer, (size_t)BUFFER_SIZE );

    // Output
    printf("   Characters converted: %u\n", i);
    printf("    Multibyte character: %s\n\n",
     pMBBuffer );

    // Free multibyte character buffer
    if (pMBBuffer)
    {
    free(pMBBuffer);
    }
}
  

.NET Framework Eşdeğeri

Yoktur. Standart c işlevi çağırmak için kullanmak PInvoke. Daha fazla bilgi için bkz: Platform Çağırma örnekleri.

Ayrıca bkz.

Başvuru

Veri Dönüştürme

Yerel ayar

_mbclen, mblen, _mblen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

wctomb_s, _wctomb_s_l

WideCharToMultiByte