标准库标头 <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)
<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)

迭代器
<iterator>
范围
<ranges> (C++20)
<generator> (C++23)
算法
数值
<cfenv> (C++11)
<complex>
<numbers> (C++20)

日期时间
<chrono> (C++11)
本地化
<codecvt> (C++11/17)
输入/输出
<filesystem> (C++17)
<cstdio>
<cinttypes> (C++11)
<strstream> (C++98/)
正则表达式
<regex>
并发支持
<stop_token> (C++20)
<thread> (C++11)
<atomic> (C++11)
<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)

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

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

<ciso646> (C++20 前)

 

此标头原作为 <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 对象为定制的宽字符串文本表示
(函数)
转换宽字符串为整数值
(函数)
转换宽字符串为无符号整数值
(函数)
转换宽字符串为浮点值
(函数)

注意

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 已提供