Aracılığıyla paylaş


mbstowcs, _mbstowcs_l

Çok baytlı karakter dizisi ilgili geniş bir karakter dizisi için dönüştürür.Bu işlevler daha güvenli sürümlerinin kullanılabilir olduğunu; see mbstowcs_s, _mbstowcs_s_l.

size_t mbstowcs(
   wchar_t *wcstr,
   const char *mbstr,
   size_t count 
);
size_t _mbstowcs_l(
   wchar_t *wcstr,
   const char *mbstr,
   size_t count,
   _locale_t locale
);
template <size_t size>
size_t mbstowcs(
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count 
); // C++ only
template <size_t size>
size_t _mbstowcs_l(
   wchar_t (&wcstr)[size],
   const char *mbstr,
   size_t count,
   _locale_t locale
); // C++ only

Parametreler

  • [Çıkış]wcstr
    Geniş bir karakter dizisi adresidir.

  • [in]mbstr
    Adresi, bir dizi null, çok baytlı karakterleri sonlandırıldı.

  • [in]count
    Çok baytlı karakterlere dönüştürmek için en fazla sayısı.

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

Dönüş Değeri

mbstowcs Başarıyla kaynak dize dönüştürür dönüştürülen çok baytlı karakterlerin sayısını verir.wcstr Bağımsız değişkeni NULL, gerekli boyutunu (geniş karakter) hedef dize işlev verir.mbstowcs Geçersiz bir çok baytlı karakter karşılaşır –1 değerini döndürür.Dönüş değeri ise count, geniş karakter dizesinin boş sonlandırılmış değil.

Güvenlik NotuGüvenlik Notu

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

Notlar

mbstowcs İşlevi dönüştüren bir sayısı kadar count için çok baytlı karakterleri işaret tarafından mbstr için geçerli yerel ayarı tarafından belirlenen ilgili geniş karakterden oluşan bir dize.Gösterdiği adresteki sonuç geniş karakter dizesi depolayan wcstr*.* Bir dizi çağrı sonucu benzer mbtowc.mbstowcs Önce ya da ne zaman tek baytlık boş karakter ('\0') karşılaştığı count dönüştürür geniş karakter null karakteri (l '\0') için boş karakter ve durduğunda gerçekleşir.Böylece en geniş karakter dizesi wcstr boş karakter dönüştürme sırasında karşılaşılırsa biten.Sıraları göre sıralanmasını, wcstr ve mbstr üst üste davranışı tanımsız.

wcstr Bağımsız değişkeni NULL, mbstowcs null Sonlandırıcı dahil edilmez, dönüştürme işlemi olacak geniş karakter sayısını verir.Kaynak dizesi döndürülecek doğru değeri boş sonlandırılmış olmalıdır.Biten olarak ortaya çıkan geniş karakter dizesi gerekiyorsa, döndürülen değere ekleyin.

If the mbstr argument is NULL, or if count is > INT_MAX, geçersiz parametre işleyicisi, açıklandığı şekilde çağrılır Parametre doğrulama .Yürütülmesine devam etmek için izin verilirse, hatano ayarlamak EINVAL ve işlev-1 değerini döndürür.

mbstowcsGeçerli yerel ayarı herhangi bir yerel ayara bağımlı davranışını kullanır; _mbstowcs_l Bunun yerine geçirilen yerel kullanır dışında aynıdır.Daha fazla bilgi için bkz. Yerel ayar.

C++'da, bu işlevlerin daha yeni ve güvenli karşılıkları çağırmak şablon aşırı bu işlevleri vardır.Daha fazla bilgi için bkz. Güvenli şablon aşırı yükleme.

Gereksinimler

Yordamı

Gerekli başlık

mbstowcs

<stdlib.h>

_mbstowcs_l

<stdlib.h>

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

Örnek

// crt_mbstowcs.c
// compile with: /W3
// illustrates the behavior of the mbstowcs function

#include <stdlib.h>
#include <stdio.h>
#include <locale.h>

int main( void )
{
    size_t size;
    int nChar = 2; // number of characters to convert
    int requiredSize;

    unsigned char    *pmbnull  = NULL;
    unsigned char    *pmbhello = NULL;
    char* localeInfo;
    
    wchar_t *pwchello = L"\x3042\x3043"; // 2 Hiragana characters
    wchar_t *pwc;

    /* Enable the Japanese locale and codepage */
    localeInfo = setlocale(LC_ALL, "Japanese_Japan.932");
    printf("Locale information set to %s\n", localeInfo);
    
    printf( "Convert to multibyte string:\n" );

    requiredSize = wcstombs( NULL, pwchello, 0); // C4996
    // Note: wcstombs is deprecated; consider using wcstombs_s
    printf("  Required Size: %d\n", requiredSize);

    /* Add one to leave room for the null terminator. */
    pmbhello = (unsigned char *)malloc( requiredSize + 1);
    if (! pmbhello)
    {
        printf("Memory allocation failure.\n");
        return 1;
    }
    size = wcstombs( pmbhello, pwchello, requiredSize + 1); // C4996
    // Note: wcstombs is deprecated; consider using wcstombs_s
    if (size == (size_t) (-1))
    {
        printf("Couldn't convert string. Code page 932 may"
                " not be available.\n");
        return 1;
    }
    printf( "  Number of bytes written to multibyte string: %u\n",
            (unsigned int) size );
    printf( "  Hex values of the " );
    printf( " multibyte characters: %#.2x %#.2x %#.2x %#.2x\n",
            pmbhello[0], pmbhello[1], pmbhello[2], pmbhello[3] );
    printf( "  Codepage 932 uses 0x81 to 0x9f as lead bytes.\n\n");

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

    /* Assume we don't know the length of the multibyte string.
     Get the required size in characters, and allocate enough space. */

    requiredSize = mbstowcs(NULL, pmbhello, 0); // C4996
    /* Add one to leave room for the NULL terminator */
    pwc = (wchar_t *)malloc( (requiredSize + 1) * sizeof( wchar_t ));
    if (! pwc)
    {
        printf("Memory allocation failure.\n");
        return 1;
    }
    size = mbstowcs( pwc, pmbhello, requiredSize + 1); // C4996
    if (size == (size_t) (-1))
    {
       printf("Couldn't convert string--invalid multibyte character.\n");
    }
    printf( "  Characters converted: %u\n", (unsigned int)size );
    printf( "  Hex value of first 2" );
    printf( " wide characters: %#.4x %#.4x\n\n", pwc[0], pwc[1] );
    free(pwc);
    free(pmbhello);
}
  
  

.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

Yorumunu çok baytlı karakter dizileri

_mbclen, mblen, _mblen_l

mbtowc, _mbtowc_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l

MultiByteToWideChar