C语言字符串操作总结大全(超详细)

2020-01-06 20:19:30王振洲

typedef _Elem char_type; 
typedef int int_type; 
typedef streampos pos_type; 
typedef streamoff off_type; 
typedef mbstate_t state_type; 

其中 int_type 表示字符元素转换到特定编码时的整型表示,pos_type, off_type 分别作为字符串索引和字符串元素偏移的类型,类似容器迭中的指针,迭代类型和指针,迭代器的偏移类型。最后的 state_type 用于存储流状态,如出错,格式控制等等。 

3)定义了字符 / 字符串操作的包装界面,以便通用算法的调用 

assign(a, b) 定义将 b 字符赋值给 a 字符的过程,实现 a.operator = 的行为 
eq(a, b) 定义 a 字符和 b 字符的相等关系,实现 a.operator == 的行为 
lt(a, b) 定义 a 小于 b 的关系,实现 a.operator < 的行为 
compare(a_ptr, b_ptr, cnt) 定义两组字符串的比较,返回 int 类型,实现类似 memcmp 的行为 
length(ptr) 定义取字符串长度,实现类似 strlen 的行为 
copy(a_ptr, b_ptr, cnt) 定义两组字符串的复制,实现类似 memcpy 的行为 
move(a_ptr, b_ptr, cnt) 定义两组字符串的不重叠复制,实现类似 memmove 的行为 
assign(ptr, cnt, ch) 定义了填充字符串的过程,实现类似 memset 的行为 
to_int_type(ch) 定义了 char_type 到 int_type 整型的转换过程 
to_char_type(n) 定义了 int_type 到 char_type 字符型的转换过程 
eq_int_type(a, b) 定义两个和当前 char_type 类型对应的 int_type 的相等关系 
eof() 定义字符串结尾符,使用整型表示 
not_eof(n) 定义非字符串结尾符,若输入结尾符,则返回 1,其他输入返回原值,即总是不返回 eof() 

4)int_type 类型应是当前字符类型的整型编码 

 

二、std::string 并不是序列容器,没有 front() 和 back() 界面用于取出前端和尾端的元素,使用 std::string::operator [] 并传递 streampos 类型取得特定元素,如 std::string::size() - 1 作为索引取得最后一个字符