wcrtomb

Konvertieren eines Breitzeichen, die in seine Darstellung Mehrbytezeichen.Eine sicherere Version dieser Funktion ist verfügbar. Weitere Informationen finden Sie unter wcrtomb_s.

size_t wcrtomb(
   char *mbchar,
   wchar_t wchar,
   mbstate_t *mbstate
);
template <size_t size>
size_t wcrtomb(
   char (&mbchar)[size],
   wchar_t wchar,
   mbstate_t *mbstate
); // C++ only

Parameter

  • [out] mbchar
    Das resultierende Mehrbyte konvertierten Zeichen.

  • [in] wchar
    Ein zu konvertierender Breitzeichen.

  • [in] mbstate
    Ein Zeiger auf einen mbstate_t-Objekt.

Rückgabewert

Gibt die erforderliche Anzahl von Bytes zurück, die das konvertierte Mehrbytezeichen, andernfalls -1 (null) dargestellt werden soll, wenn ein Fehler auftritt.

Hinweise

Die wcrtomb-Funktion konvertiert ein Breitzeichen, wobei im angegebenen Zustand der Konvertierung in mbstate, vom Wert enthalten ist, der in wchar, entspricht der Adresse durch mbchardargestellt wird.Der Rückgabewert ist die Anzahl von Bytes erforderlich, um den entsprechenden Mehrbytezeichens darzustellen, sondern gibt nicht mehr als MB_CUR_MAX Bytes zurück.

Wenn mbstate NULL ist, wird das interne mbstate_t-Objekt, das den Zustand der Konvertierung von mbchar enthält, verwendet.Wenn die Zeichensequenz wchar Mehrbytezeichen keine entsprechende Darstellung verfügt, wird -1 zurückgegeben und errno wird auf EILSEQfestgelegt.

Die wcrtomb-Funktion unterscheidet sich von wctomb, _wctomb_l durch seine Neustartfähigkeit.Der Zustand der Konvertierung in mbstate für nachfolgende Aufrufe an derselben oder zu einer anderen restartable Funktionen gespeichert.Ergebnisse werden nicht definiert, wenn die Verwendung restartable und nonrestartable Funktionen kombiniert.Beispielsweise kann eine Anwendung wcsrlen statt wcsnlenverwenden, wenn ein nachfolgender Aufruf von wcsrtombs anstelle wcstombsverwendet wurden.

In C++ verfügt diese Funktion keine Vorlagen Überladung, die aufruft, das neueres speichern, Entsprechungen für diese Funktion.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Ausnahmen

Die wcrtomb-Funktion ist multithreadsicher, solange keine Funktion im aktuellen Thread setlocale aufgerufen, während diese Funktion ausgeführt wird und während mbstate NULL ist.

Beispiel

// crt_wcrtomb.c
// compile with: /W3
// This program converts a wide character
// to its corresponding multibyte character.

#include <string.h>
#include <stdio.h>
#include <wchar.h>

int main( void )
{
    size_t      sizeOfCovertion = 0;
    mbstate_t   mbstate;
    char        mbStr = 0;
    wchar_t*    wcStr = L"Q";

    // Reset to initial conversion state
    memset(&mbstate, 0, sizeof(mbstate));

    sizeOfCovertion = wcrtomb(&mbStr, *wcStr, &mbstate); // C4996
    // Note: wcrtomb is deprecated; consider using wcrtomb_s instead
    if (sizeOfCovertion > 0)
    {
        printf("The corresponding wide character \"");
        wprintf(L"%s\"", wcStr);
        printf(" was converted to the \"%c\" ", mbStr);
        printf("multibyte character.\n");
    }
    else
    {
        printf("No corresponding multibyte character "
               "was found.\n");
    }
}
  

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Anforderungen

Routine

Erforderlicher Header

wcrtomb

<wchar.h>

Siehe auch

Referenz

Datenkonvertierung

Gebietsschema

Interpretation von Mehrbytezeichen-Sequenzen

mbsinit