Заголовочный файл стандартной библиотеки <cwchar>
Материал из cppreference.com
Этот заголовочный файл изначально был в стандартной библиотеке C как <wchar.h>.
Этот заголовок является частью библиотек широких и многобайтовых строк с нулевым завершением. Он также предоставляет некоторые функции Ввода/Вывода в стиле C и преобразование Даты в стиле C.
Макросы
| определяемая реализацией константа для нулевого указателя (макроконстанта) | |
WEOF |
несимвольное значение типа wint_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 также определяется в следующих заголовках:
Резюме
namespace std {
using size_t = /* смотри описание */; // автономная
using mbstate_t = /* смотри описание */; // автономная
using wint_t = /* смотри описание */; // автономная
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); // автономная
wchar_t* wcsncpy(wchar_t* s1, const wchar_t* s2, size_t n); // автономная
wchar_t* wmemcpy(wchar_t* s1, const wchar_t* s2, size_t n); // автономная
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n); // автономная
wchar_t* wcscat(wchar_t* s1, const wchar_t* s2); // автономная
wchar_t* wcsncat(wchar_t* s1, const wchar_t* 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* s1, const wchar_t* s2, size_t n);
int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n); // автономная
const wchar_t* wcschr(const wchar_t* s, wchar_t c); // автономная
wchar_t* wcschr(wchar_t* s, wchar_t c); // автономная
size_t wcscspn(const wchar_t* s1, const wchar_t* s2); // автономная
const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2); // автономная
wchar_t* wcspbrk(wchar_t* s1, const wchar_t* s2); // автономная
const wchar_t* wcsrchr(const wchar_t* s, wchar_t c); // автономная
wchar_t* wcsrchr(wchar_t* s, wchar_t c); // автономная
size_t wcsspn(const wchar_t* s1, const wchar_t* s2); // автономная
const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2); // автономная
wchar_t* wcsstr(wchar_t* s1, const wchar_t* s2); // автономная
wchar_t* wcstok(wchar_t* s1, const wchar_t* s2, wchar_t** ptr); // автономная
const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); // автономная
wchar_t* wmemchr(wchar_t* s, wchar_t c, size_t n); // автономная
size_t wcslen(const wchar_t* s); // автономная
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n); // автономная
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);
// функции преобразования многобайтовых/широких строк и символов
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 /* смотри описание */ // автономная
#define WCHAR_MAX /* смотри описание */ // автономная
#define WCHAR_MIN /* смотри описание */ // автономная
#define WEOF /* смотри описание */ // автономная
Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| LWG 345 | C++98 | std::tm не была определена в <cwchar>
|
предоставлена |