C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- C++ 具名要求: 函数对象 (FunctionObject)
- C++ 具名要求: 二元谓词 (BinaryPredicate)
- C++ 具名要求: 可默认构造 (DefaultConstructible)
- C++ 具名要求: 可复制赋值 (CopyAssignable)
- C++ 具名要求: 可复制构造 (CopyConstructible)
- C++ 具名要求: 可移动赋值 (MoveAssignable) (C++11 起)
- C++ 具名要求: 可移动构造 (MoveConstructible) (C++11 起)
- C++ 具名要求: 可析构 (Destructible)
- C++ 具名要求: 可平凡复制 (TriviallyCopyable)
- C++ 具名要求: 可相等比较 (EqualityComparable)
- C++ 具名要求: 可小于比较 (LessThanComparable)
- C++ 具名要求: 比较 (Compare)
- C++ 具名要求: 字面类型 (LiteralType)
- C++ 具名要求: 简旧数据类型 (PODType)
- C++ 具名要求: 平凡类型 (TrivialType)
- C++ 具名要求: 标准布局类型 (StandardLayoutType)
- C++ 具名要求: 遗留向前迭代器 (LegacyForwardIterator)
- C++ 具名要求: 可交换 (Swappable)
- C++ 具名要求: 值可交换 (ValueSwappable)
- C++ 具名要求: 可空指针 (NullablePointer) (C++11 起)
- C++ 具名要求: 散列 (Hash)
- C++ 具名要求: 分配器 (Allocator)
- C++ 具名要求: 可调用 (Callable)
- C++ 具名要求: 谓词 (Predicate)
- C++ 具名要求: 容器 (Container)
- C++ 具名要求: 序列容器 (SequenceContainer)
- C++ 具名要求: 连续容器 (ContiguousContainer)
- C++ 具名要求: 可逆容器 (ReversibleContainer)
- C++ 具名要求: 关联容器 (AssociativeContainer)
- C++ 具名要求: 具分配器容器 (AllocatorAwareContainer)
- C++ 具名要求: 无序关联容器 (UnorderedAssociativeContainer)
- C++ 具名要求: 可默认插入 (DefaultInsertable)
- C++ 具名要求: 可复制插入 (CopyInsertable)
- C++ 具名要求: 可移动插入 (MoveInsertable) (C++11 起)
- C++ 具名要求: 可就位构造 (EmplaceConstructible) (C++11 起)
- C++ 具名要求: 可擦除 (Erasable)
- C++ 具名要求: 遗留迭代器 (LegacyIterator)
- C++ 具名要求: 遗留输出迭代器 (LegacyOutputIterator)
- C++ 具名要求: 遗留输入迭代器 (LegacyInputIterator)
- C++ 具名要求: 遗留双向迭代器 (LegacyBidirectionalIterator)
- C++ 具名要求: 遗留随机访问迭代器 (LegacyRandomAccessIterator)
- C++ 具名要求: 遗留连续迭代器 (LegacyContiguousIterator)
- C++ 具名要求: 常量表达式迭代器 (ConstexprIterator)
- C++ 具名要求: 有格式输入函数 (FormattedInputFunction)
- C++ 具名要求: 无格式输入函数 (UnformattedInputFunction)
- C++ 具名要求: 有格式输出函数 (FormattedOutputFunction)
- C++ 具名要求: 无格式输出函数 (UnformattedOutputFunction)
- C++ 具名要求: 种子序列 (SeedSequence)
- C++ 具名要求: 随机数引擎 (RandomNumberEngine)
- C++ 具名要求: 随机数分布 (RandomNumberDistribution)
- C++ 具名要求: 均匀随机位生成器 (UniformRandomBitGenerator)
- C++ 具名要求: 随机数引擎适配器 (RandomNumberEngineAdaptor)
- C++ 具名要求: 基本可锁定 (BasicLockable)
- C++ 具名要求: 可锁定 (Lockable)
- C++ 具名要求: 可定时锁定 (TimedLockable)
- C++ 具名要求: 互斥体 (Mutex)
- C++ 具名要求: 定时互斥体 (TimedMutex)
- C++ 具名要求: 共享互斥体 (SharedMutex)
- C++ 具名要求: 共享定时互斥体 (SharedTimedMutex)
- C++ 具名要求: 字符特征 (CharTraits)
- C++ 具名要求: 正则表达式特征 (RegexTraits)
- C++ 具名要求: 位掩码类型 (BitmaskType)
- C++ 具名要求: 数值类型 (NumericType)
- C++ 具名要求: 一元类型特征 (UnaryTypeTrait)
- C++ 具名要求: 二元类型特征 (BinaryTypeTrait)
- C++ 具名要求: 变换特征 (TransformationTrait)
- C++ 具名要求: 时钟 (Clock)
- C++ 具名要求: 平凡时钟 (TrivialClock)
- 注释
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
C++ 具名要求: 字符特征 (CharTraits)
字符特征 (CharTraits) 是特性类,它抽象给定字符类型的基本字符和字符串操作。大多数标准库字符串类和输入/输出类要求伴随对应字符模板类型形参的字符特征 (CharTraits) 模板类型。
要求
字符特征 (CharTraits) 上的操作均不可抛出异常。
给定
- CharT ,字符类型
- X , CharT 的字符特征 (CharTraits) 类型
- c, d , CharT 类型值
- p, q , const CharT* 类型值
- s , CharT* 类型值
- n, i, j , std::size_t 类型值
- e, f , X::int_type 类型值
- pos , X::pos_type 类型值
- state , X::state_type 类型值
- r , CharT 类型左值
表达式 | 返回类型 | 语义 | 复杂度 |
---|---|---|---|
X::char_type | CharT | 用于指代字符类型 | 编译时 |
X::int_type | 能保有 X::char_type 的所有合法值加 X::eof() 的类型 | 编译时 | |
X::off_type | 以 X 为输入/输出类中的特性模板形参时,若此类型非 std::streamoff 则引起实现定义行为。 | 编译时 | |
X::pos_type |
|
编译时 | |
X::state_type | 可析构 (Destructible) 、可复制赋值 (CopyAssignable) 、可复制构造 (CopyConstructible) 、可默认构造 (DefaultConstructible) | 编译时 | |
X::eq(c,d) | bool | 返回:是否把 c 当做等于 d | 常数 |
X::lt(c,d) | bool | 返回:是否把 c 当做小于 d | 常数 |
X::compare(p,q,n) | int | 返回:
|
线性 |
X::length(p) | std::size_t | 返回:使得 X::eq(p[i], CharT()) 为 true 的最小 i | 线性 |
X::find(p,n,c) | const X::char_type* | 返回:
|
线性 |
X::move(s,p,n) | X::char_type* |
|
线性 |
X::copy(s,p,n) | X::char_type* |
|
线性 |
X::assign(r,d) | (不使用) | 赋值 r = d | 常量 |
X::assign(s,n,c) | X::char_type* |
|
线性 |
X::not_eof(e) | X::int_type | 返回:
|
常数 |
X::to_char_type(e) | X::char_type | 返回:
|
常数 |
X::to_int_type(c) | X::int_type | 返回: X::to_char_type 和 X::eq_int_type 的定义所制约的某值 e | 常数 |
X::eq_int_type(e,f) | bool |
|
常数 |
X::eof() | X::int_type | 返回:使得 X::eq_int_type(e, X::to_int_type(c)) 对于所有值 c 为 false 的值 e | 常量 |
标准库
下列标准库类模板要求字符特征 (CharTraits) 作为模板类型形参:
存储并操作字符序列 (类模板) | |
(C++17) |
只读的字符串视图 (类模板) |
管理任意流缓冲 (类模板) | |
包装给定的抽象设备(std::basic_streambuf) 并提供高层输入接口 (类模板) | |
实现高层文件流输入操作 (类模板) | |
实现高层字符串流输入操作 (类模板) | |
包装给定的抽象设备(std::basic_streambuf) 并提供高层输出接口 (类模板) | |
实现高层文件流输出操作 (类模板) | |
实现高层字符串流输出操作 (类模板) | |
(C++20) |
同步输出流的包装 (类模板) |
包装给定的抽象设备(std::basic_streambuf) 并提供高层输入/输出接口 (类模板) | |
实现高层文件流输入/输出操作 (类模板) | |
实现高层字符串流输入/输出操作 (类模板) | |
从 std::basic_istream 读取的输入迭代器 (类模板) | |
写入 std::basic_ostream 的输出迭代器 (类模板) | |
抽象原生设备 (类模板) | |
抽象原生文件设备 (类模板) | |
实现原生字符串设备 (类模板) | |
(C++20) |
同步输出设备的包装 (类模板) |
从 std::basic_streambuf 读取的输入迭代器 (类模板) | |
写入 std::basic_streambuf 的输出迭代器 (类模板) |
下列标准库类满足字符特征 (CharTraits) :
template<> class char_traits<char>; template<> class char_traits<wchar_t>; |
(C++20 起) (C++11 起) (C++11 起) |
|