标准库标头 <cwchar>
来自cppreference.com
此标头原作为 <wchar.h>
存在于 C 标准库。
此头文件是空终止宽及多字节字符串库的一部分。它也提供了一些 C 风格输入/输出函数和源自 C 风格日期的转换。
宏
实现定义的空指针常量 (宏常量) | |
WEOF |
用于指示错误的 std::wint_t 类型非字符值 (宏常量) |
WCHAR_MIN |
wchar_t 的最小合法值 (宏常量) |
WCHAR_MAX |
wchar_t 的最大合法值 (宏常量) |
类型
迭代多字节字符串所需的转换状态信息 (类) | |
sizeof 运算符返回的无符号整数类型 (typedef) | |
wint_t
|
能保有任何合法宽字符和至少多一个值的整数类型 |
日历时间类型 (类) |
函数
字符串操纵 | |
复制一个宽字符串到另一个 (函数) | |
复制来自一个宽字符串的一定量宽字符到另一个 (函数) | |
后附一个宽字符串的副本到另一个 (函数) | |
后附来自一个宽字符串的一定量宽字符到另一个 (函数) | |
变换宽字符串,使得 wcscmp 会产生与 wsccoll 相同的结果 (函数) | |
字符串检验 | |
返回宽字符串长度 (函数) | |
比较两个宽字符串 (函数) | |
比较来自两个宽字符串的一定量宽字符 (函数) | |
按照当前本地环境比较两个宽字符串 (函数) | |
寻找宽字符串中宽字符的首次出现 (函数) | |
在宽字符串中寻找宽字符的最后一次出现 (函数) | |
返回仅由另一宽字符串中找到的宽字符组成的最大起始段的长度 (函数) | |
返回仅由另一宽字符串中找不到的宽字符组成的最大起始段的长度 (函数) | |
在一个宽字符串中,寻找另一宽字符串中任何字符的首个位置 (函数) | |
在另一宽字符串中寻找宽字符串的首次出现 (函数) | |
寻找宽字符串中的下一个记号 (函数) | |
宽字符数组操纵 | |
在两个不重叠数组间复制一定量宽字符 (函数) | |
在两个可能重叠的数组间复制一定量宽字符 (函数) | |
比较来自两个数组的一定量宽字符 (函数) | |
寻找宽字符数组中宽字符的首次出现 (函数) | |
复制给定宽字符到宽字符数组的每个位置 (函数) | |
多字节/宽字符转换 | |
检查 std::mbstate_t 对象是否表示初始迁移状态 (函数) | |
若可能,则加宽单字节窄字符为宽字符 (函数) | |
若可能,则窄化宽字符为单字节窄字符 (函数) | |
给定状态,返回下一个多字节字符中的字节数 (函数) | |
给定状态,转换下个多字节字符为宽字符 (函数) | |
给定状态,转换宽字符到其多字节表示 (函数) | |
给定状态,转换窄多字节字符串到宽字符串 (函数) | |
给定状态,转换宽字符串为窄多字节字符串 (函数) | |
输入/输出 | |
从文件流获取宽字符 (函数) | |
从文件流获取宽字符串 (函数) | |
写宽字符到文件流 (函数) | |
写宽字符串到文件流 (函数) | |
从 stdin 读取宽字符 (函数) | |
写宽字符到 stdout (函数) | |
把宽字符放回文件流 (函数) | |
在宽字符输入/输出和窄字符输入/输出间切换文件流 (函数) | |
从 stdin、文件流或缓冲区读取有格式宽字符输入 (函数) | |
(C++11)(C++11)(C++11) |
使用可变实参列表 从 stdin、文件流或缓冲区读取有格式宽字符输入 (函数) |
打印有格式宽字符输出到 stdout、文件流或缓冲区 (函数) | |
使用可变实参列表打印 有格式宽字符输出到 stdout、文件流或缓冲区 (函数) | |
字符串转换 | |
转换 tm 对象为定制的宽字符串文本表示 (函数) | |
转换宽字符串为整数值 (函数) | |
转换宽字符串为无符号整数值 (函数) | |
转换宽字符串为浮点值 (函数) |
注意
- NULL 也在以下标头定义:
- std::size_t 也在以下标头定义:
-
std::wint_t
也在以下标头定义: - std::tm 也在以下标头定义:
Synopsis
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); // 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 /* 见描述 */ // 独立 #define WCHAR_MAX /* 见描述 */ // 独立 #define WCHAR_MIN /* 见描述 */ // 独立 #define WEOF /* 见描述 */ // 独立
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 345 | C++98 | <cwchar> 没有提供 std::tm
|
已提供 |