Namespaces
Variants

Standard library header <wchar.h> (C95)

From cppreference.net

Этот заголовок является частью библиотеки широких строк с нулевым завершением .

Содержание

Функции

Преобразования в числовые форматы
(C95) (C99)
преобразует широкую строку в целочисленное значение
(функция)
(C95) (C99)
преобразует широкую строку в целое число без знака
(функция)
(C99) (C95) (C99)
преобразует широкую строку в значение с плавающей запятой
(функция)
Манипуляции со строками
(C95) (C11)
копирует одну широкую строку в другую
(функция)
копирует определённое количество широких символов из одной строки в другую
(функция)
(C95) (C11)
добавляет копию одной широкой строки к другой
(функция)
добавляет определённое количество широких символов из одной широкой строки в другую
(функция)
(C95)
преобразует широкую строку так, чтобы wcscmp выдавал тот же результат, что и wcscoll
(функция)
Исследование строк
(C95) (C11)
возвращает длину широкой строки
(функция)
(C95)
сравнивает две широкие строки
(функция)
(C95)
сравнивает определённое количество символов из двух широких строк
(функция)
(C95)
сравнивает две широкие строки в соответствии с текущей локалью
(функция)
(C95)
находит первое вхождение широкого символа в широкой строке
(функция)
(C95)
находит последнее вхождение широкого символа в широкой строке
(функция)
(C95)
возвращает длину максимального начального сегмента, который состоит
только из широких символов, найденных в другой широкой строке
(функция)
(C95)
возвращает длину максимального начального сегмента, который состоит
только из широких символов, не найденных в другой широкой строке
(функция)
(C95)
находит первое вхождение любого широкого символа из одной широкой строки в другой широкой строке
(функция)
(C95)
находит первое вхождение широкой строки в другой широкой строке
(функция)
(C95) (C11)
находит следующий токен в широкой строке
(функция)
Манипуляции с массивами широких символов
копирует определённое количество широких символов между двумя неперекрывающимися массивами
(функция)
копирует определённое количество широких символов между двумя, возможно перекрывающимися, массивами
(функция)
(C95)
сравнивает определённое количество широких символов из двух массивов
(функция)
(C95)
находит первое вхождение широкого символа в массиве широких символов
(функция)
(C95)
копирует заданный широкий символ в каждую позицию массива широких символов
(функция)

Типы

wchar_t
целочисленный тип, способный содержать любой допустимый расширенный символ
(typedef)
wint_t
(C95)
целочисленный тип, способный содержать любой допустимый расширенный символ и как минимум одно дополнительное значение
(typedef)

Макросы

WEOF
(C95)
несимвольное значение типа wint_t используемое для индикации ошибок
(макроконстанта)
WCHAR_MIN
(C95)
минимальное допустимое значение wchar_t
(макроконстанта)
WCHAR_MAX
(C95)
максимальное допустимое значение wchar_t
(макроконстанта)

Синопсис

#define __STDC_VERSION_WCHAR_H__ 202311L
typedef /* см. описание */ wchar_t;
typedef /* см. описание */ size_t;
typedef /* см. описание */ mbstate_t;
typedef /* см. описание */ wint_t;
struct tm { /* см. описание */ };
#define MB_UTF16    /* см. описание */
#define MB_UTF32    /* см. описание */
#define MB_UTF8     /* см. описание */
#define NULL        /* см. описание */
#define WCHAR_MAX   /* см. описание */
#define WCHAR_MIN   /* см. описание */
#define WCHAR_UTF16 /* см. описание */
#define WCHAR_UTF32 /* см. описание */
#define WCHAR_UTF8  /* см. описание */
#define WCHAR_WIDTH /* см. описание */
#define WEOF        /* см. описание */
int fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...);
int fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...);
int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...);
int swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...);
int vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
int vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
int vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format,
              va_list arg);
int vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg);
int vwprintf(const wchar_t* restrict format, va_list arg);
int vwscanf(const wchar_t* restrict format, va_list arg);
int wprintf(const wchar_t* restrict format, ...);
int wscanf(const wchar_t* restrict format, ...);
wint_t fgetwc(FILE* stream);
wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream);
wint_t fputwc(wchar_t c, FILE* stream);
int fputws(const wchar_t* restrict s, FILE* restrict stream);
int fwide(FILE* stream, int mode);
wint_t getwc(FILE* stream);
wint_t getwchar(void);
wint_t putwc(wchar_t c, FILE* stream);
wint_t putwchar(wchar_t c);
wint_t ungetwc(wint_t c, FILE* stream);
double wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr);
float wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr);
long double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr);
long int wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
long long int wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base);
unsigned long int wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr,
                          int base);
unsigned long long int wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr,
                                int base);
wchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
wchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2);
wchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
int wcscmp(const wchar_t* s1, const wchar_t* s2);
int wcscoll(const wchar_t* s1, const wchar_t* s2);
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
size_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n);
int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n);
/*QWchar_t*/* wcschr(/*QWchar_t*/* s, wchar_t c);
size_t wcscspn(const wchar_t* s1, const wchar_t* s2);
/*QWchar_t*/* wcspbrk(/*QWchar_t*/* s1, const wchar_t* s2);
/*QWchar_t*/* wcsrchr(/*QWchar_t*/* s, wchar_t c);
size_t wcsspn(const wchar_t* s1, const wchar_t* s2);
/*QWchar_t*/* wcsstr(/*QWchar_t*/* s1, const wchar_t* s2);
wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2,
                wchar_t** restrict ptr);
/*QWchar_t*/* wmemchr(/*QWchar_t*/* s, wchar_t c, size_t n);
size_t wcslen(const wchar_t* s);
size_t wcsnlen(const wchar_t* s, size_t n);
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format,
                const struct tm* restrict timeptr);
wint_t btowc(int c);
int wctob(wint_t c);
int mbsinit(const mbstate_t* ps);
size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps);
size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n,
               mbstate_t* restrict ps);
size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps);
size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len,
                 mbstate_t* restrict ps);
size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len,
                 mbstate_t* restrict ps);

Только если реализация определяет __STDC_IEC_60559_DFP__ :

_Decimal32 wcstod32(const wchar_t* restrict nptr, wchar_t** restrict endptr);
_Decimal64 wcstod64(const wchar_t* restrict nptr, wchar_t** restrict endptr);
_Decimal128 wcstod128(const wchar_t* restrict nptr, wchar_t** restrict endptr);

Только если реализация определяет __STDC_IEC_60559_TYPES__ и дополнительно пользовательский код определяет __STDC_WANT_IEC_60559_TYPES_EXT__ до любого включения <wchar.h> :

#ifdef __STDC_WANT_IEC_60559_TYPES_EXT__
/*_FloatN*/ /*wcstofN*/(const wchar_t* restrict nptr, wchar_t** restrict endptr);
/*_FloatNx*/ /*wcstofNx*/(const wchar_t* restrict nptr, wchar_t** restrict endptr);
/*_DecimalN*/ /*wcstodN*/(const wchar_t* restrict nptr, wchar_t** restrict endptr);
/*_DecimalNx*/ /*wcstodNx*/(const wchar_t* restrict nptr, wchar_t** restrict endptr);
void /*wcstoencfN*/(unsigned char encptr[restrict static N/8],
                    const wchar_t* restrict nptr, wchar_t** restrict endptr);
void /*wcstoencdecdN*/(unsigned char encptr[restrict static N/8],
                       const wchar_t* restrict nptr, wchar_t** restrict endptr);
void /*wcstoencbindN*/(unsigned char encptr[restrict static N/8],
                       const wchar_t* restrict nptr, wchar_t** restrict endptr);
#endif
**Примечание:** Весь код C++ оставлен без изменений, как и требовалось. HTML-теги, атрибуты и содержимое внутри тегов `
` и `` сохранены в оригинальном виде. В данном фрагменте нет переводимого текста за пределами кода, поэтому перевод не требуется.

Только если реализация определяет __STDC_LIB_EXT1__ и дополнительно пользовательский код определяет __STDC_WANT_LIB_EXT1__ до любого включения <wchar.h> :

#ifdef __STDC_WANT_LIB_EXT1__
typedef /* см. описание */ errno_t;
typedef /* см. описание */ rsize_t;
int fwprintf_s(FILE* restrict stream, const wchar_t* restrict format, ...);
int fwscanf_s(FILE* restrict stream, const wchar_t* restrict format, ...);
int snwprintf_s(wchar_t* restrict s, rsize_t n, const wchar_t* restrict format, ...);
int swprintf_s(wchar_t* restrict s, rsize_t n, const wchar_t* restrict format, ...);
int swscanf_s(const wchar_t* restrict s, const wchar_t* restrict format, ...);
int vfwprintf_s(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
int vfwscanf_s(FILE* restrict stream, const wchar_t* restrict format, va_list arg);
int vsnwprintf_s(wchar_t* restrict s, rsize_t n, const wchar_t* restrict format,
                 va_list arg);
int vswprintf_s(wchar_t* restrict s, rsize_t n, const wchar_t* restrict format,
                va_list arg);
int vswscanf_s(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg);
int vwprintf_s(const wchar_t* restrict format, va_list arg);
int vwscanf_s(const wchar_t* restrict format, va_list arg);
int wprintf_s(const wchar_t* restrict format, ...);
int wscanf_s(const wchar_t* restrict format, ...);
errno_t wcscpy_s(wchar_t* restrict s1, rsize_t s1max, const wchar_t* restrict s2);
errno_t wcsncpy_s(wchar_t* restrict s1, rsize_t s1max, const wchar_t* restrict s2,
                  rsize_t n);
errno_t wmemcpy_s(wchar_t* restrict s1, rsize_t s1max, const wchar_t* restrict s2,
                  rsize_t n);
errno_t wmemmove_s(wchar_t* s1, rsize_t s1max, const wchar_t* s2, rsize_t n);
errno_t wcscat_s(wchar_t* restrict s1, rsize_t s1max, const wchar_t* restrict s2);
errno_t wcsncat_s(wchar_t* restrict s1, rsize_t s1max, const wchar_t* restrict s2,
                  rsize_t n);
wchar_t* wcstok_s(wchar_t* restrict s1, rsize_t* restrict s1max,
                  const wchar_t* restrict s2, wchar_t** restrict ptr);
size_t wcsnlen_s(const wchar_t* s, size_t maxsize);
errno_t wcrtomb_s(size_t* restrict retval, char* restrict s, rsize_t smax, wchar_t wc,
                  mbstate_t* restrict ps);
errno_t mbsrtowcs_s(size_t* restrict retval, wchar_t* restrict dst, rsize_t dstmax,
                    const char** restrict src, rsize_t len, mbstate_t* restrict ps);
errno_t wcsrtombs_s(size_t* restrict retval, char* restrict dst, rsize_t dstmax,
                    const wchar_t** restrict src, rsize_t len, mbstate_t* restrict ps);
#endif