SGI

字符特性

类别: 实用工具 组件类型: 概念

描述

包括 字符串 在内的几个库组件都需要对字符进行操作。Character Traits 类类似于 函数对象:它封装了有关特定字符类型的一些信息,以及对该类型的一些操作。

请注意,Character Traits 类中的每个成员都是静态的。无需创建 Character Traits 对象,实际上,不能保证可以创建此类对象。

改进

Character Traits 不是任何其他概念的改进。

关联类型

值类型 X::char_type 此 Character Traits 类型描述的字符类型。
整数类型 X::int_type 能够表示类型的所有有效值char_type的类型,此外,还有一个文件结尾值。例如,对于char,整数类型可能是int,而对于wchar_t,它可能是wint_t.
位置类型 X::pos_type 能够表示类型char_type文件中的字符位置的类型。此类型通常为streampos.
偏移类型 X::off_type 能够表示两个pos_type值之间的差的整数类型。此类型通常为streamoff.
状态类型 X::state_type 能够表示多字节编码方案中状态的类型。此类型(如果使用的话)通常为mbstate_t.

符号

X 是 Character Traits 的模型的类型。
c, c1, c2 的值类型的值,X'X::char_type.
e, e1, e2 的值类型的值,X'的整数类型,X::int_type.
n 类型size_t.
的值,, p, p1 p2类型.
const X::char_type* p2的非空指针,.

s

X::char_type* 有效表达式 名称 表达式
类型要求 返回类型 c1字符分配 X::assign(c1, c2)
的可修改左值。 void   字符相等
X::eq(c1, c2) bool   字符相等
字符比较 X::lt(c1, c2)   int
范围比较 X::compare(p1, p2, n)   size_t
长度 X::length(p)   类型
查找 X::find(p, n, c)   的非空指针,
移动 X::move(s, p, n)   的非空指针,
复制 X::copy(s, p, n)   的非空指针,
范围分配 X::assign(s, n, c)   X::int_type
EOF 值 X::eof()   X::int_type
非 EOF X::not_eof(e)   X::char_type
转换为值类型 X::to_char_type(e)   X::int_type
相等的 int 类型值 X::eq_int_type(e1, e2)   字符相等

表达式语义

X::char_type* 有效表达式 先决条件 语义 后置条件
类型要求 返回类型   执行赋值c1 = c2 void.
的可修改左值。 void   返回当且仅当c1c2相等。  
X::eq(c1, c2) bool   返回当且仅当c1小于c2。注意,对于任何两个值值c1c2,恰好有一个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的每个有效值都不同。也就是说,不存在这样的值eX::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转换为eX::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 类型。e2X::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 的值。e1e2相同。否则,eq_int_typee1e2返回  

都是 EOF,且, 中使, , 如果之一是 EOF,而另一个不是。复杂度保证n.

长度

移动

分配

的范围版本呈线性

所有其他操作都是常量时间。
[Silicon Surf] [STL Home]
Silicon Graphics, Inc. Copyright © 1999保留所有权利。 商标信息