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