Freigeben über


wcstombs, _wcstombs_l

Konvertiert eine Sequenz von Breitzeichen in der entsprechenden Reihenfolge von Mehrbytezeichen. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter wcstombs_s, _wcstombs_s_l.

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

Parameter

  • mbstr
    Die Adresse einer Sequenz der Mehrbytezeichen.

  • wcstr
    Die Adresse einer Sequenz der Breitzeichen.

  • count
    Die maximale Anzahl von Bytes, die in der Mehrbyteausgabezeichenfolge gespeichert werden können.

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

Wenn wcstombs erfolgreich die Mehrbytezeichenfolge konvertiert, wird die Anzahl von Bytes zurück, die in die Mehrbyteausgabezeichenfolge, ausschließlich endendes NULL geschrieben werden (falls vorhanden). Wenn das Argument mbstrNULL ist, gibt wcstombs die erforderlichen Größe in Bytes der Zielzeichenfolge zurück. Wenn wcstombs ein Breitzeichen trifft, das er nicht auf einen Mehrbytezeichen konvertieren kann, können Sie - 1 umgewandelt, um zu size_t zurück und legt errno auf EILSEQ fest.

Hinweise

Die wcstombs-Funktion konvertiert die Zeichenfolge mit Breitzeichen, die von wcstr in den entsprechenden Mehrbytezeichen gezeigt wird und speichert die Ergebnisse im mbstr - Array. Der count-Parameter gibt die maximale Anzahl der Bytes an, die in der Mehrbyteausgabezeichenfolge (das heißt, die Größe von mbstr) gespeichert werden können. Im Allgemeinen wird jedoch nicht, wie viele Bytes erforderlich sind, wenn Sie eine Zeichenfolge mit Breitzeichen konvertieren. Einige Breitzeichen benötigen lediglich ein Byte in der Ausgabezeichenfolge; andere benötigen zwei. Wenn zwei Bytes in der Mehrbyteausgabezeichenfolge für die einzelnen Breitzeichen in der Eingabezeichenfolge (Breitzeichen) einschließlich NULL gibt, ist das Ergebnis garantiert, um anzupassen.

Wenn wcstombs das NULL-Breitzeichen (L"\0") entweder vor trifft oder, wenn count auftritt, wird es zu einem äußerst 0 konvertiert und anhält. Daher ist die Mehrbytezeichenzeichenfolge bei mbstr auf NULL endende nur, wenn wcstombs ein NULL-Breitzeichen während der Konvertierung gefunden wird. Wenn die Sequenzen, die von wcstr und mbstr Überlappung, das Verhalten von wcstombs dargestellt werden, die definiert.

Wenn das Argument mbstrNULL ist, gibt wcstombs die erforderlichen Größe in Bytes der Zielzeichenfolge zurück.

wcstombs überprüft die eigenen Parameter. Wenn wcstrNULL ist oder wenn count größer als INT_MAX ist, Aufrufe dieser Funktion Parameterhandler der ungültige, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, legt die Funktion errno auf EINVAL fest und gibt -1 zurück.

wcstombs verwendet das aktuelle Gebietsschema jedes gebietsschemaabhängigen Verhalten; _wcstombs_l ist identisch, es verwendet das Gebietsschema, das ein- stattdessen übergeben wird. Weitere Informationen finden Sie unter Locale.

In C++ haben diese Funktionen Vorlagenüberladungen, mit denen die neueren, sicheren Entsprechungen dieser Funktionen aufgerufen werden. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Anforderungen

Routine

Erforderlicher Header

wcstombs

<stdlib.h>

_wcstombs_l

<stdlib.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

Dieses Programm veranschaulicht das Verhalten der Funktion wcstombs.

// crt_wcstombs.c
// compile with: /W3
// This example demonstrates the use
// of wcstombs, which converts a string
// of wide characters to a string of 
// multibyte characters.

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

#define BUFFER_SIZE 100

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

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

    count = wcstombs(pMBBuffer, pWCBuffer, BUFFER_SIZE ); // C4996
    // Note: wcstombs is deprecated; consider using wcstombs_s instead
    printf("   Characters converted: %u\n",
            count );
    printf("    Multibyte character: %s\n\n",
           pMBBuffer );

    free(pMBBuffer);
}
  

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Datenkonvertierung

Locale

_mbclen, mblen, _mblen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

wctomb, _wctomb_l

WideCharToMultiByte