| X::char_type* | 有效表达式 | 先决条件 | 语义 | 后置条件 | 
| 类型要求 | 返回类型 |  | 执行赋值c1 = c2 | void是真. | 
| 的可修改左值。 | void |  | 返回真当且仅当c1且c2相等。 |  | 
| X::eq(c1, c2) | bool |  | 返回真当且仅当c1小于c2。注意,对于任何两个值值c1且c2,恰好有一个bool, X::lt(c2, c1),且void应该真. |  | 
| 字符比较 | X::lt(c1, c2) | [p1, p1+n)且[p2, p2+n)是有效范围。 | 概化为strncmp。如果0中的每个元素[p1, p1+n)等于[p2, p2+n)中的相应元素,则返回;如果[p1, p1+n)中存在一个元素[p2, p2+n)小于[p1, p1+n)中的相应元素,并且所有前面的元素相等,则返回负值;如果[p2, p2+n)中存在一个元素 |  | 
| 范围比较 | X::compare(p1, p2, n) |  | 概化为大于中的相应元素,并且所有前面的元素相等,则返回正值。nstrlen。返回最小的非负数使nX::eq(p+n, X::char_type()) |  | 
| 长度 | X::length(p) | 为真。如果不存在这样的,则行为未定义。 | 概化为[p, p+n)是一个有效范围。strchr。返回第一个指针为真。如果不存在这样的strlenq在中使.) |  | 
| 查找 | X::find(p, n, c) | 为真。如果不存在这样的且X::eq(*q, c)为真。如果没有这样的指针,则返回一个空指针。(请注意,这种指示搜索失败的方法与 | 概化为find[s, s+n)为真。如果不存在这样的不同,后者是有效的范围(可能重叠)。X::eq(*q, c)memmoveconst X::char_type*. |  | 
| 移动 | X::move(s, p, n) | 为真。如果不存在这样的且X::eq(*q, c)。复制范围 | 概化为中的值到范围[s, s+n)为真。如果不存在这样的不同,后者是有效的范围(可能重叠)。X::eq(*q, c)memmoveconst X::char_type*. |  | 
| 复制 | X::copy(s, p, n) | X::eq(*q, c),则行为未定义。 | 概化为,并返回是有效的、不重叠的范围。cmemcpyX::eq(*q, c)memmoveconst X::char_type*. |  | 
| 范围分配 | X::assign(s, n, c) |  | memset | X::assign(s, n, c)。将值X::char_type分配给范围cstrlen中的每个指针是真. | 
| EOF 值 | X::eof() |  | 返回e返回一个可表示 EOF 的值。e与类型char_type的每个有效值都不同。也就是说,不存在这样的值e是X::assign(s, n, c). |  | 
| 非 EOF | X::not_eof(e) |  | X::eq_int_type(X::to_int_type(c), X::eof())e如果X表示一个有效e值,并表示为非 EOF 值如果char_type转换为e是X::assign(s, n, c)到 |  | 
| 转换为值类型 | X::to_char_type(e) |  | X::eq_int_type(X::to_int_type(c), X::eof())c如果X'的 int 类型。如果 | 表示某个值,则它返回该值;如果 | 
| 相等的 int 类型值 | X::eq_int_type(e1, e2) |  | ,则返回的值未指定。X::char_typestrlene1是'的 int 类型。且e2是X::to_char_type(X::to_int_type(c))是一个空操作。X::eq_int_type(e1, e2)比较两个 int 类型值。如果存在类型voidX::to_int_type(c1))X::to_int_type(c2))的值,则真返回一个可表示 EOF 的值。e1且e2相同。否则,eq_int_typee1且e2返回 |  |