wcrtomb
Przekonwertować szerokich znaków na jego reprezentacji znaków wielobajtowych.Bardziej bezpieczna wersja ta funkcja jest dostępna; see 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
Parametry
[out]mbchar
Wynikowy wielobajtowe konwersji znaków.[w]wchar
Szerokich znaków do konwertowania.[w]mbstate
Wskaźnik do mbstate_t obiektu.
Wartość zwracana
Zwraca liczbę bajtów wymaganych do reprezentowania przekonwertowanych znaków wielobajtowych, w przeciwnym razie -1 w przypadku wystąpienia błędu.
Uwagi
wcrtomb Funkcja konwertuje szerokich znaków, począwszy od stanu określonej konwersji zawartych w mbstate, od wartości zawartych w wchar, na adres, reprezentowana przez mbchar.Zwracana wartość jest liczbą bajtów potrzebną do reprezentowania odpowiednich znaków wielobajtowych, ale nie zwróci więcej niż MB_CUR_MAX bajtów.
Jeśli mbstate ma wartość null, wewnętrznego mbstate_t zawierających stan konwersji obiektu mbchar jest używana.Jeżeli sekwencja znaków wchar nie ma odpowiedniego wielobajtowe reprezentacji znaków, zwracany jest -1 i errno jest ustawiona na EILSEQ.
wcrtomb Funkcja różni się od wctomb, _wctomb_l przez jego restartability.Stan konwersji jest przechowywany w mbstate dla kolejnych zaproszeń na to samo lub inne funkcje Przerywalne.Wyniki są niezdefiniowane, przy użyciu funkcji Przerywalne i nonrestartable.Na przykład, aplikacja będzie korzystać z wcsrlen zamiast wcsnlen, jeśli kolejne wywołania wcsrtombs zostały użyte zamiast wcstombs.
W języku C++ funkcja ta ma przeciążenia szablonu, która wywołuje odpowiedników nowsze, bezpieczne tej funkcji.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.
Wyjątki
wcrtomb Funkcja jest wielowątkowym bezpieczne tak długo, jak długo wywoła żadnej funkcji w bieżącym wątku setlocale podczas wykonywania tej funkcji, a zarazem mbstate ma wartość null.
Przykład
// 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");
}
}
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
wcrtomb |
<wchar.h> |