命名空间
变体
操作

标准库头文件 <cwchar>

来自 cppreference.com
< cpp‎ | header
 
 
标准库头文件
语言支持
概念
<concepts> (C++20)
诊断
<system_error> (C++11)

内存管理
<memory_resource> (C++17)  
元编程
<type_traits> (C++11)
<ratio> (C++11)
通用实用程序
<utility>
<tuple> (C++11)
<optional> (C++17)
<variant> (C++17)
<any> (C++17)
<debugging> (C++26)
<expected> (C++23)
<bitset>
<charconv> (C++17)
<format> (C++20)
<bit> (C++20)

字符串
<cstring>
<cwchar>
<cuchar> (C++11)

容器
<flat_set> (C++23)
<span> (C++20)
<mdspan> (C++23)
<inplace_vector> (C++26)
迭代器
<iterator>
范围
<ranges> (C++20)
<generator> (C++23)
算法
数值
<cfenv> (C++11)
<complex>
<cmath>
<linalg> (C++26)
<numbers> (C++20)

时间
<chrono> (C++11)
本地化
<codecvt> (C++11/17/26*)
<text_encoding> (C++26)
输入/输出
<filesystem> (C++17)
<cstdio>
<cinttypes> (C++11)
<strstream> (C++98/26*)
正则表达式
<regex> (C++11)
并发支持
<stop_token> (C++20)
<thread> (C++11)
<atomic> (C++11)
<rcu> (C++26)
<stdatomic.h> (C++23)
<mutex> (C++11)
<shared_mutex> (C++14)

<condition_variable> (C++11)  
<semaphore> (C++20)
<latch> (C++20)

<barrier> (C++20)
<future> (C++11)
<hazard_pointer> (C++26)

C 兼容性
<cstdbool> (C++11/17/20*)  
<ccomplex> (C++11/17/20*)
<ctgmath> (C++11/17/20*)

<cstdalign> (C++11/17/20*)

<ciso646> (直到 C++20)

 

此头文件最初位于 C 标准库中,名为 <wchar.h>.

此头文件是空终止 多字节 字符串库的一部分。它还提供了一些 C 样式 I/O 函数,以及从 C 样式日期 转换的功能。

内容

[编辑]

实现定义的空指针常量
(宏常量) [编辑]
WEOF
类型为 std::wint_t 的非字符值,用于指示错误
(宏常量)
WCHAR_MIN
wchar_t 的最小有效值
(宏常量)
WCHAR_MAX
wchar_t 的最大有效值
(宏常量)

[编辑] 类型

迭代多字节字符字符串所需的转换状态信息
(类) [编辑]
sizeof 运算符返回的无符号整型
(typedef) [编辑]
wint_t 可以容纳任何有效宽字符和至少一个额外值的整型
日历时间类型
(类) [编辑]

[编辑] 函数

字符串操作
将一个宽字符串复制到另一个宽字符串
(函数) [编辑]
将一定数量的宽字符从一个字符串复制到另一个字符串
(函数) [编辑]
将一个宽字符串的副本追加到另一个宽字符串
(函数) [编辑]
将一定数量的宽字符从一个宽字符串追加到另一个宽字符串
(函数) [编辑]
转换宽字符串,使 wcscmp 的结果与 wcscoll 相同
(函数) [编辑]
字符串检查
返回宽字符串的长度
(函数) [编辑]
比较两个宽字符串
(函数) [编辑]
比较两个宽字符串中一定数量的字符
(函数) [编辑]
根据当前区域设置比较两个宽字符串
(函数) [编辑]
在宽字符串中查找宽字符的首次出现位置
(函数) [编辑]
在宽字符串中查找宽字符的最后一次出现位置
(函数) [编辑]
返回由另一个宽字符串中找到的宽字符组成的最大初始段的长度
仅包含在另一个宽字符串中找到的宽字符
(函数) [编辑]
返回由另一个宽字符串中找到的宽字符组成的最大初始段的长度
仅包含在另一个宽字符串中没有找到的宽字符
(函数) [编辑]
在另一个宽字符串中查找一个宽字符串中任何宽字符的首次出现位置
(函数) [编辑]
在另一个宽字符串中查找一个宽字符串的首次出现位置
(函数) [编辑]
在宽字符串中查找下一个标记
(函数) [编辑]
宽字符数组操作
在两个不重叠的数组之间复制一定数量的宽字符
(函数) [编辑]
在两个可能重叠的数组之间复制一定数量的宽字符
(函数) [编辑]
比较两个数组中一定数量的宽字符
(函数) [编辑]
在宽字符数组中查找宽字符的首次出现位置
(函数) [编辑]
将给定的宽字符复制到宽字符数组的每个位置
(函数) [编辑]
多字节/宽字符转换
检查 std::mbstate_t 对象是否表示初始移位状态
(函数) [编辑]
如果可能,将单个字节窄字符扩展为宽字符
(函数) [编辑]
如果可能,将宽字符缩窄为单个字节窄字符
(函数) [编辑]
返回给定状态下下一个多字节字符中的字节数
(函数) [编辑]
将给定状态下的下一个多字节字符转换为宽字符
(函数) [编辑]
将宽字符转换为其多字节表示形式,给定状态
(函数) [编辑]
将窄多字节字符字符串转换为宽字符串,给定状态
(函数) [编辑]
将宽字符串转换为窄多字节字符字符串,给定状态
(函数) [编辑]
输入/输出
从文件流中获取宽字符
(函数) [编辑]
从文件流中获取宽字符串
(函数) [编辑]
将宽字符写入文件流
(函数) [编辑]
将宽字符串写入文件流
(函数) [编辑]
stdin 读取宽字符
(函数) [编辑]
将宽字符写入 stdout
(函数) [编辑]
将宽字符放回文件流
(函数) [编辑]
在宽字符 I/O 和窄字符 I/O 之间切换文件流
(函数) [编辑]
stdin、文件流或缓冲区读取格式化的宽字符输入
(函数) [编辑]
(C++11)(C++11)(C++11)
stdin、文件流
或使用可变参数列表的缓冲区读取格式化的宽字符输入
(函数) [编辑]
将格式化的宽字符输出打印到 stdout、文件流或缓冲区
(函数) [编辑]
将格式化的宽字符输出打印到 stdout、文件流
或使用可变参数列表的缓冲区读取格式化的宽字符输入
(函数) [编辑]
字符串转换
std::tm 对象转换为自定义宽字符串文本表示
(函数) [编辑]
将宽字符串转换为整数值
(函数) [编辑]
将宽字符串转换为无符号整数值
(函数) [编辑]
将宽字符串转换为浮点值
(函数) [编辑]

[编辑] 注释

[编辑] 概要

namespace std {
  using size_t =    /* see description */; // 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      /* see description */ // freestanding
#define WCHAR_MAX /* see description */ // freestanding
#define WCHAR_MIN /* see description */ // freestanding
#define WEOF      /* see description */ // freestanding

[编辑] 缺陷报告

以下行为更改缺陷报告被追溯应用到先前发布的 C++ 标准。

DR 应用于 已发布的行为 正确行为
LWG 345 C++98 std::tm 未在 <cwchar> 中提供 提供