Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konwertuje szeroki znak na odpowiadający znak wielobajtowy. Wersja programu z ulepszeniami zabezpieczeń wctomb _wctomb_lzgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Składnia
errno_t wctomb_s(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar
);
errno_t _wctomb_s_l(
int *pRetValue,
char *mbchar,
size_t sizeInBytes,
wchar_t wchar,
_locale_t locale
);
Parametry
pRetValue
Liczba bajtów lub kod wskazujący wynik.
mbchar
Adres znaku wielobajtowego.
sizeInBytes
Rozmiar buforu mbchar.
wchar
Szeroki znak do konwersji.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
Zero, jeśli działanie powiedzie się, kod błędu w przypadku niepowodzenia.
Warunki błędu
mbchar |
sizeInBytes |
Wartość zwracana | pRetValue |
|---|---|---|---|
NULL |
>0 | EINVAL |
niezmodyfikowane |
| dowolny | >INT_MAX |
EINVAL |
niezmodyfikowane |
| dowolny | za mały | EINVAL |
niezmodyfikowane |
Jeśli wystąpi którykolwiek z powyższych warunków błędu, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, wctomb zwraca EINVAL i ustawia wartość EINVALerrno .
Wartość EILSEQ zwracana wskazuje, że wartość przekazywana za pośrednictwem parametru wchar nie jest prawidłowym znakiem szerokim.
Uwagi
Funkcja wctomb_s konwertuje argument wchar na odpowiedni znak wielobajtowy i przechowuje wynik na mbchar. Funkcję można wywołać z dowolnego punktu w dowolnym programie.
Jeśli wctomb_s konwertuje znak szeroki na znak wielobajtowy, umieszcza liczbę bajtów (która nigdy nie jest większa niż MB_CUR_MAX) w szerokim znaku na liczbę całkowitą wskazywaną przez pRetValuewartość . Jeśli wchar jest znakiem null o szerokim znaku (L'\0'), wctomb_s wypełnia pRetValue znakiem 1. Jeśli wskaźnik mbchar docelowy to NULL, wctomb_s umieszcza wartość 0 w pRetValueelem. Jeśli konwersja nie jest możliwa w bieżących ustawieniach regionalnych, wctomb_s umieszcza wartość -1 w elemencie pRetValue.
wctomb_s używa bieżących ustawień regionalnych dla informacji zależnych od ustawień regionalnych; _wctomb_s_l jest identyczna, z tą różnicą, że używa ustawień regionalnych przekazanych w zamian. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
| Procedura | Wymagany nagłówek |
|---|---|
wctomb_s |
<stdlib.h> |
_wctomb_s_l |
<stdlib.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Ten program ilustruje zachowanie wctomb_s funkcji.
// crt_wctomb_s.cpp
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int i;
wchar_t wc = L'a';
char *pmb = (char *)malloc( MB_CUR_MAX );
printf_s( "Convert a wide character:\n" );
wctomb_s( &i, pmb, MB_CUR_MAX, wc );
printf_s( " Characters converted: %u\n", i );
printf_s( " Multibyte character: %.1s\n\n", pmb );
}
Convert a wide character:
Characters converted: 1
Multibyte character: a
Zobacz też
Konwersja danych
ustawienia regionalne
_mbclen, , mblen_mblen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
wcstombs, _wcstombs_l
WideCharToMultiByte