Заголовочный файл стандартной библиотеки <cwchar>
Изначально этот заголовочный файл входил в стандартную библиотеку C как <wchar.h>.
Этот заголовочный файл входит в библиотеки строк с завершающим нулём: широких и многобайтовых. Он также предоставляет некоторые функции ввода-вывода в стиле C и преобразование из даты в стиле C.
Макросы
| определяемая реализацией константа нулевого указателя (макроконстанта) |
|
|
WEOF | значение типа std::wint_t, не являющееся символом и используемое для обозначения ошибок (макроконстанта) |
|
WCHAR_WIDTH
(C++26) | разрядность типа wchar_t (макроконстанта) |
|
WCHAR_MIN | минимальное значение типа wchar_t (макроконстанта) |
|
WCHAR_MAX | максимальное значение типа wchar_t (макроконстанта) |
Типы
| информация о состоянии преобразования, необходимая для перебора строк многобайтовых символов (класс) |
|
беззнаковый целочисленный тип, возвращаемый оператором sizeof (псевдоним типа) |
|
wint_t | целочисленный тип, способный хранить любое допустимое значение широкого символа и как минимум ещё одно значение |
| тип календарного времени (класс) |
Функции
Манипуляции со строками |
|
| копирует одну широкую строку в другую (функция) |
|
| копирует заданное количество широких символов из одной строки в другую (функция) |
|
| добавляет копию одной широкой строки к другой (функция) |
|
| добавляет заданное количество широких символов из одной широкой строки к другой (функция) |
|
преобразует широкую строку так, чтобы wcscmp давала тот же результат, что и wcscoll (функция) |
|
Исследование строк |
|
| возвращает длину широкой строки (функция) |
|
| сравнивает две широкие строки (функция) |
|
| сравнивает заданное количество символов из двух широких строк (функция) |
|
| сравнивает две широкие строки в соответствии с текущей локалью (функция) |
|
| находит первое вхождение широкого символа в широкой строке (функция) |
|
| находит последнее вхождение широкого символа в широкой строке (функция) |
|
| возвращает длину максимального начального сегмента, состоящего только из широких символов, найденных в другой широкой строке (функция) |
|
| возвращает длину максимального начального сегмента, состоящего только из широких символов, не найденных в другой широкой строке (функция) |
|
| находит первое положение любого широкого символа из одной широкой строки в другой широкой строке (функция) |
|
| находит первое вхождение широкой строки в другую широкую строку (функция) |
|
| находит следующий токен в широкой строке (функция) |
|
Манипуляции с массивами широких символов |
|
| копирует заданное количество широких символов между двумя неперекрывающимися массивами (функция) |
|
| копирует заданное количество широких символов между двумя, возможно перекрывающимися, массивами (функция) |
|
| сравнивает заданное количество широких символов из двух массивов (функция) |
|
| находит первое вхождение широкого символа в массиве широких символов (функция) |
|
| копирует заданный широкий символ в каждую позицию массива широких символов (функция) |
|
Преобразование многобайтовых/широких символов |
|
проверяет, представляет ли объект std::mbstate_t начальное состояние сдвига (функция) |
|
| преобразует узкий однобайтовый символ в широкий символ, если это возможно (функция) |
|
| преобразует широкий символ в узкий однобайтовый символ, если это возможно (функция) |
|
| возвращает количество байтов в следующем многобайтовом символе с учётом состояния (функция) |
|
| преобразует следующий многобайтовый символ в широкий символ с учётом состояния (функция) |
|
| преобразует широкий символ в его многобайтовое представление с учётом состояния (функция) |
|
| преобразует строку узких многобайтовых символов в широкую строку с учётом состояния (функция) |
|
| преобразует широкую строку в строку узких многобайтовых символов с учётом состояния (функция) |
|
Ввод-вывод |
|
| получает широкий символ из файлового потока (функция) |
|
| получает широкую строку из файлового потока (функция) |
|
| записывает широкий символ в файловый поток (функция) |
|
| записывает широкую строку в файловый поток (функция) |
|
считывает широкий символ из stdin (функция) |
|
записывает широкий символ в stdout (функция) |
|
| возвращает широкий символ в файловый поток (функция) |
|
| переключает файловый поток между вводом-выводом широких символов и вводом-выводом узких символов (функция) |
|
считывает форматированный ввод широких символов из stdin, файлового потока или буфера (функция) |
|
|
(C++11)(C++11)(C++11) | считывает форматированный ввод широких символов из stdin, файлового потокаили буфера, используя список переменного числа аргументов (функция) |
выводит форматированный текст из широких символов в stdout, файловый поток или буфер (функция) |
|
выводит форматированный текст из широких символов в stdout, файловый потокили буфер, используя список переменного числа аргументов (функция) |
|
Преобразование строк |
|
преобразует объект std::tm в текстовое представление в виде широкой строки с заданным форматом (функция) |
|
| преобразует широкую строку в целочисленное значение (функция) |
|
| преобразует широкую строку в беззнаковое целочисленное значение (функция) |
|
| преобразует широкую строку в число с плавающей точкой (функция) |
|
Примечания
-
NULLтакже определён в следующих заголовочных файлах: -
std::size_tтакже определён в следующих заголовочных файлах: -
std::wint_tтакже определён в следующих заголовочных файлах: -
std::tmтакже определён в следующих заголовочных файлах:
Обзор
#define __STDC_VERSION_WCHAR_H__ 202311L
namespace std {
using size_t = /* implementation-defined */; // freestanding
using mbstate_t = /* see description */; // freestanding
using wint_t = /* see description */; // freestanding
struct tm;
int fwprintf(FILE* stream, const wchar_t* format, ...);
int fwscanf(FILE* stream, const wchar_t* format, ...);
int swprintf(wchar_t* s, size_t n, const wchar_t* format, ...);
int swscanf(const wchar_t* s, const wchar_t* format, ...);
int vfwprintf(FILE* stream, const wchar_t* format, va_list arg);
int vfwscanf(FILE* stream, const wchar_t* format, va_list arg);
int vswprintf(wchar_t* s, size_t n, const wchar_t* format, va_list arg);
int vswscanf(const wchar_t* s, const wchar_t* format, va_list arg);
int vwprintf(const wchar_t* format, va_list arg);
int vwscanf(const wchar_t* format, va_list arg);
int wprintf(const wchar_t* format, ...);
int wscanf(const wchar_t* format, ...);
wint_t fgetwc(FILE* stream);
wchar_t* fgetws(wchar_t* s, int n, FILE* stream);
wint_t fputwc(wchar_t c, FILE* stream);
int fputws(const wchar_t* s, FILE* stream);
int fwide(FILE* stream, int mode);
wint_t getwc(FILE* stream);
wint_t getwchar();
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* nptr, wchar_t** endptr);
float wcstof(const wchar_t* nptr, wchar_t** endptr);
long double wcstold(const wchar_t* nptr, wchar_t** endptr);
long int wcstol(const wchar_t* nptr, wchar_t** endptr, int base);
long long int wcstoll(const wchar_t* nptr, wchar_t** endptr, int base);
unsigned long int wcstoul(const wchar_t* nptr, wchar_t** endptr, int base);
unsigned long long int wcstoull(const wchar_t* nptr, wchar_t** endptr, int base);
wchar_t* wcscpy(wchar_t* s1, const wchar_t* s2); // freestanding
wchar_t* wcsncpy(wchar_t* s1, const wchar_t* s2, size_t n); // freestanding
wchar_t* wmemcpy(wchar_t* s1, const wchar_t* s2, size_t n); // freestanding
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n); // freestanding
wchar_t* wcscat(wchar_t* s1, const wchar_t* s2); // freestanding
wchar_t* wcsncat(wchar_t* s1, const wchar_t* s2, size_t n); // freestanding
int wcscmp(const wchar_t* s1, const wchar_t* s2); // freestanding
int wcscoll(const wchar_t* s1, const wchar_t* s2);
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n); // freestanding
size_t wcsxfrm(wchar_t* s1, const wchar_t* s2, size_t n);
int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n); // freestanding
const wchar_t* wcschr(const wchar_t* s, wchar_t c); // freestanding
wchar_t* wcschr(wchar_t* s, wchar_t c); // freestanding
size_t wcscspn(const wchar_t* s1, const wchar_t* s2); // freestanding
const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2); // freestanding
wchar_t* wcspbrk(wchar_t* s1, const wchar_t* s2); // freestanding
const wchar_t* wcsrchr(const wchar_t* s, wchar_t c); // freestanding
wchar_t* wcsrchr(wchar_t* s, wchar_t c); // freestanding
size_t wcsspn(const wchar_t* s1, const wchar_t* s2); // freestanding
const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2); // freestanding
wchar_t* wcsstr(wchar_t* s1, const wchar_t* s2); // freestanding
wchar_t* wcstok(wchar_t* s1, const wchar_t* s2, wchar_t** ptr); // freestanding
const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); // freestanding
wchar_t* wmemchr(wchar_t* s, wchar_t c, size_t n); // freestanding
size_t wcslen(const wchar_t* s); // freestanding
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n); // freestanding
size_t wcsftime(wchar_t* s, size_t maxsize, const wchar_t* format, const tm* timeptr);
wint_t btowc(int c);
int wctob(wint_t c);
// multibyte / wide string and character conversion functions
int mbsinit(const mbstate_t* ps);
size_t mbrlen(const char* s, size_t n, mbstate_t* ps);
size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* ps);
size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
size_t mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps);
size_t wcsrtombs(char* dst, const wchar_t** src, size_t len, mbstate_t* ps);
}
#define NULL /* implementation-defined */ // freestanding
#define WCHAR_MAX /* see description */ // freestanding
#define WCHAR_MIN /* see description */ // freestanding
#define WEOF /* see description */ // freestanding
#define WCHAR_WIDTH /* see description */ // freestanding
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применён к | Поведение согласно опубликованной версии | Правильное поведение |
|---|---|---|---|
| LWG 345 | C++98 |
std::tm не был предоставлен в <cwchar> | предоставлен |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/header/cwchar