◐ Shell
clean mode source ↗

标准库标头 <cwchar> - cppreference.com

来自cppreference.com

此标头原作为 <wchar.h> 存在于 C 标准库。

此头文件是空终止多字节字符串库的一部分。 它也提供了一些 C 风格输入/输出函数和源自 C 风格日期的转换。

由实现定义的空指针常量
(宏常量) [编辑]
指示错误的 std::wint_t 类型非字符值
(宏常量)
wchar_t 的位宽
(宏常量) [编辑]
wchar_t 的最小值
(宏常量) [编辑]
wchar_t 的最大值
(宏常量) [编辑]

类型

函数

字符串操纵
复制宽字符串到另一个
(函数) [编辑]
复制来自宽字符串的一定量宽字符到另一个
(函数) [编辑]
追加宽字符串的副本到另一个
(函数) [编辑]
追加来自宽字符串的一定量宽字符到另一个
(函数) [编辑]
变换宽字符串,使得 wcscmp 会产生与 wsccoll 相同的结果
(函数) [编辑]
字符串检验
返回宽字符串长度
(函数) [编辑]
比较两个宽字符串
(函数) [编辑]
比较来自两个宽字符串的一定量宽字符
(函数) [编辑]
按照当前本地环境比较两个宽字符串
(函数) [编辑]
寻找宽字符串中宽字符的首次出现
(函数) [编辑]
在宽字符串中寻找宽字符的最后一次出现
(函数) [编辑]
返回仅由另一宽字符串中找到的宽字符组成的最大起始段的长度
(函数) [编辑]
返回仅由另一宽字符串中找到的宽字符组成的最大起始段的长度
(函数) [编辑]
在宽字符串中,寻找另一宽字符串中任何字符的首个位置
(函数) [编辑]
在另一宽字符串中寻找宽字符串的首次出现
(函数) [编辑]
寻找宽字符串中的下一个记号
(函数) [编辑]
宽字符数组操纵
在两个不重叠数组间复制一定量宽字符
(函数) [编辑]
在两个可能重叠的数组间复制一定量宽字符
(函数) [编辑]
比较来自两个数组的一定量宽字符
(函数) [编辑]
寻找宽字符数组中宽字符的首次出现
(函数) [编辑]
复制给定宽字符到宽字符数组的每个位置
(函数) [编辑]
多字节/宽字符转换
检查 std::mbstate_t 对象是否表示初始迁移状态
(函数) [编辑]
若可能,加宽单字节窄字符为宽字符
(函数) [编辑]
若可能,窄化宽字符为单字节窄字符
(函数) [编辑]
给定状态,返回下一个多字节字符中的字节数
(函数) [编辑]
给定状态,转换下个多字节字符为宽字符
(函数) [编辑]
给定状态,转换宽字符到其多字节表示
(函数) [编辑]
给定状态,转换窄多字节字符串到宽字符串
(函数) [编辑]
给定状态,转换宽字符串为窄多字节字符串
(函数) [编辑]
输入/输出
从文件流获取宽字符
(函数) [编辑]
从文件流获取宽字符串
(函数) [编辑]
写宽字符到文件流
(函数) [编辑]
写宽字符串到文件流
(函数) [编辑]
stdin 读取宽字符
(函数) [编辑]
写宽字符到 stdout
(函数) [编辑]
把宽字符放回文件流
(函数) [编辑]
在宽字符输入/输出和窄字符输入/输出间切换文件流
(函数) [编辑]
stdin、文件流或缓冲区读取有格式宽字符输入
(函数) [编辑]

(C++11)(C++11)(C++11)

使用可变实参列表
stdin、文件流或缓冲区读取有格式宽字符输入
(函数) [编辑]
打印有格式宽字符输出到 stdout、文件流或缓冲区
(函数) [编辑]
使用可变实参列表打印
有格式宽字符输出到 stdout、文件流或缓冲区
(函数) [编辑]
字符串转换
std::tm 对象转换成自定义的宽字符串文本表示
(函数) [编辑]
转换宽字符串为整数值
(函数) [编辑]
转换宽字符串为无符号整数值
(函数) [编辑]
转换宽字符串为浮点数
(函数) [编辑]

注解

Synopsis

#define __STDC_VERSION_WCHAR_H__ 202311L

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 /* 见描述 */        // 独立
#define WCHAR_WIDTH /* 见描述 */ // 独立

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 345 C++98 <cwchar> 没有提供 std::tm 已提供