wcstombs, _wcstombs_l

Konvertiert eine Sequenz von Breitzeichen in eine entsprechende Sequenz von Mehrbytezeichen.Sicherere Versionen dieser Funktionen sind verfügbar. Weitere Informationen 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 von Mehrbytezeichen.

  • wcstr
    Die Adresse einer Sequenz von Breitzeichen.

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

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

Wenn wcstombs die erfolgreich Mehrbyte Zeichenfolge konvertiert, gibt sie die Anzahl von Bytes zurück, die in die Mehrbyte Ausgabezeichenfolge ohne endenden NULL geschrieben werden (sofern vorhanden).Wenn das Argument mbstrNULList, gibt wcstombs die erforderliche Größe in Bytes der Zielzeichenfolge zurück.Wenn ein Breitzeichen trifft, wcstombs nicht auf einen Mehrbytezeichen konvertieren kann, gibt es 1 umgewandelt, um size_t einzugeben EILSEQzu errno zurück und legt ihn fest.

Hinweise

Die wcstombs-Funktion konvertiert die Zeichenfolge mit Breitzeichen, die durch den entsprechenden wcstr Mehrbytezeichen gezeigten und speichert die Ergebnisse in mbstr Array.Der count-Parameter gibt die maximale Anzahl von Bytes an, die in der Mehrbyten Ausgabezeichenfolge (d. h. die Größe von mbstr) gespeichert werden können.Im Allgemeinen ist dies nicht, wie viele Bytes erforderlich sind, wenn sie eine Zeichenfolge mit Breitzeichen konvertieren.Einige Breitzeichen benötigen lediglich ein Byte in der Ausgabezeichenfolge. Zwei weitere erfordern.Wenn zwei Bytes an der Mehrbyten Ausgabezeichenfolge für die einzelnen Breitzeichen, die in der Eingabezeichenfolge NULLBreitzeichen (einschließlich) vorhanden ist, wird das Ergebnis garantiert angepasst.

Wenn das wcstombs NULL-Breitzeichen (L \ 0 ') entweder vor oder auftritt, wenn count auftritt, es zu einem 8-Bit 0 konvertiert und beendet wird.Daher ist die Mehrbytezeichen zeichenkette unter mbstr auf NULL endende nur, wenn ein wcstombs NULL-Breitzeichen bei der Konvertierung findet.Wenn die Sequenzen, die über wcstr und mbstr Überlappung, das Verhalten von wcstombs dargestellt werden, nicht definiert ist.

Wenn das Argument mbstrNULList, gibt wcstombs die erforderliche Größe in Bytes der Zielzeichenfolge zurück.

wcstombs überprüft seine Parameter.Wenn wcstrNULList oder wenn count größer alsINT_MAXist, Aufrufe dieser Funktion der ungültige Parameter für, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, legt die Funktion errno zu EINVAL fest und gibt -1 zurück.

wcstombs verwendet das aktuelle Gebietsschema für ein beliebiges gebietsschemaabhängige Verhalten. _wcstombs_l ist identisch, mit der Ausnahme, dass sie verwendet das Gebietsschema, das Stattdessen übergeben wird.Weitere Informationen finden Sie unter Gebietsschema.

In C++ haben Überladungen Vorlagen, die diese Funktionen aufrufen, um das neueres, Entsprechungen dieser Funktionen.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Anforderungen

Routine

Erforderlicher Header

wcstombs

<stdlib.h>

_wcstombs_l

<stdlib.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Beispiel

Dieses Programm wird das Verhalten der wcstombs-Funktion.

// 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. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Datenkonvertierung

Gebietsschema

_mbclen, mblen, _mblen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

wctomb, _wctomb_l

WideCharToMultiByte