Share via


wcstombs_s, _wcstombs_s_l

Konvertiert eine Sequenz von Breitzeichen in der entsprechenden Reihenfolge von Mehrbytezeichen. Eine Version von wcstombs, _wcstombs_l mit werden, wie in Sicherheitsfunktionen in der CRT beschrieben.

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

Parameter

  • [out] pReturnValue
    Die Anzahl der Zeichen konvertiert.

  • [out] mbstr
    Die Adresse eines Puffers für Zurückhalten konvertierte Mehrbytezeichenzeichenfolge.

  • [in]sizeInBytes
    Die Größe in Bytes des Puffers mbstr.

  • [in] wcstr
    Punkte die zu konvertierende Zeichenfolge mit Breitzeichen.

  • [in] count
    Die maximale Anzahl im mbstr Puffer, nicht durch einschließlich des abschließenden NULL-Zeichens zu speichernden Breitzeichen, oder _TRUNCATE.

  • [in] locale
    Das zu verwendende Gebietsschema.

Rückgabewert

Null, wenn erfolgreich, Fehlercode bei Fehler.

Fehlerstatus

Rückgabewert und errno

mbstr ist NULL und sizeInBytes > 0

EINVAL

wcstr ist NULL

EINVAL

Der Zielpuffer ist zu klein, die konvertierte Zeichenfolge zu enthalten (es sei denn, count ; _TRUNCATE ist siehe Hinweise) unten

ERANGE

Wenn diese Bedingungen auftritt, wird die ungültige Parameterausnahme aufgerufen, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, gibt die Funktion einen Fehlercode zurück und legt errno fest, wie in der Tabelle angegeben.

Hinweise

Die wcstombs_s-Funktion konvertiert eine Zeichenfolge mit Breitzeichen, die von wcstr in die Mehrbytezeichen dargestellt werden, die im Puffer gespeichert werden, auf den durch mbstr gezeigt wird. Die Konvertierung wird für jedes Zeichen fortgesetzt, bis eine dieser Bedingungen erfüllt ist:

  • Ein NULL-Makro Breitzeichen auftritt

  • Bei einem Breitzeichen, die nicht konvertiert werden kann, wird ausgeführt

  • Die Anzahl der Bytes, die im mbstr Puffer gespeichert werden, entspricht count.

Die Zielzeichenfolge ist immer auf NULL enden (selbst im Falle eines Fehlers.)

Wenn count den speziellen Wert _TRUNCATE ist, konvertiert wcstombs_s so weit der Zeichenfolge, wie in den Zielpuffer passt, wobei Platz für einen Nullterminator weiterhin beibehalten.

Wenn wcstombs_s erfolgreich die Quellzeichenfolge konvertiert, wird die Größe in Bytes der konvertierten Zeichenfolge, einschließlich das NULL-Zeichen, in *(ein pReturnValue bereit gestelltes pReturnValue nicht NULL ist). Dies tritt auf, mbstr, wenn das Argument NULL und bietet eine Möglichkeit, die erforderliche Puffergröße zu ermitteln. Beachten Sie, dass, wenn mbstrNULL ist, die count ignoriert wird.

Wenn wcstombs_s ein Breitzeichen trifft, das er nicht auf einen Mehrbytezeichen konvertieren kann, wird 0 in *pReturnValue, legt den Zielpuffer auf eine leere Zeichenfolge fest, wird errno auf EILSEQ festgelegt und EILSEQ zurückgegeben.

Wenn die Sequenzen, die von wcstr und mbstr Überlappung, das Verhalten von wcstombs_s dargestellt werden, die definiert.

SicherheitshinweisSicherheitshinweis

Stellen Sie sicher, dass wcstr und mbstr nicht überschneiden und dass count richtig die Anzahl der Breitzeichen an verschiedenen mitgeteilt.

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

In C++ wird die Verwendung dieser Funktionen durch Vorlagenüberladungen vereinfacht; die Überladungen können automatisch Rückschlüsse auf die Pufferlänge ziehen (wodurch kein Größenargument mehr angegeben werden muss), und sie können automatisch die älteren, nicht sicheren Funktionen durch ihre neueren, sicheren Entsprechungen ersetzen. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Anforderungen

Routine

Erforderlicher Header

wcstombs_s

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

// 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-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_s, _wctomb_s_l

WideCharToMultiByte