#include <string>
basic_string<>定义为所有字符串型别的基本模板类别
STL 提供两个basic_string<>的特化版本:
(1) string : typedef basic_string<char> string;
(2)wstring : typedef basic_string<wchar_t> wstring; 宽字符集 如Unicode或某些亚洲字符集;
1 构造函数析构函数
string s
string s(str)
string s(str, strindex)
string s(str, strindex, strlength)
string s(c_string)
string s(chars, chars_len)
string s(num, c)
string s(beg, end)
s.~string()
2 string to c-string
data() : 以字符数组的形式返回字符串内容,追加'\0' 返回并非有效的c-string
c_str() : 以c-string形式返回字符串内容,追加'\0'
copy() : 字符串内容复制到调用者提供的字符串数组中,不追加'\0'
data(), c_str()返回的字符数组由该字符串拥有,返回值有效期限在下一次调用non-const成员函数是终止
3 convert string to integer std::string s atoi(s.c_str())
convert string to long integer atol
convert string to double atof
convert string to long integer strtol
4 empty() 检验字符数是否为0,比size() length() 快
max_size() 返回是索引型别的最大值减1:最大值本事是npos; 实例中可轻易在内部缓冲区之后添加'\0' 将string当作c-string
capacity() 重新分配内存之前能包含的最大字符数
重新分配会使string的reference pointers iterators失效
reserve() 可预留一部分容量 string reserve()可以缩减容量 默认参数为0
vector reserve() 不可以缩减容量
5 元素存取
operator[] :不检查索引是否有效,无效时 可能存取非法内存
at() :检查索引是否有效, 无效时,out_of_range
opertaor[]的const 版本 最后一个字符的后面位置是有效的,返回char型别default构造函数产生的字符,对型别为string的对象,返回'\0'
operator[]的非const at() 返回字符的reference, 发生重新分配, reference失效
可能导致reference pointers失效的操作:
swap(); operator>> getline(); data() c_str()输出内容; non-const成员函数
6 比较 == ; < ;<=;>;>= ; 成员函数compare 0表示相等
7 更改内容 operator=; assign(); swap() 也可达到赋新值的目的
8 令string为空 s=""; s.clear(); s.erase();
9 安插 移除
operater+=
append()
push_back()
insert() 不接受索引+单独字符的参数 如s.insert(0, ' ');
erase()
replace()
10 子串字符串接合
substr() 提取子串
operator + 接合
11搜索和查找 (成员函数)
find()
rfind()
find_first_of()
find_last_of()
find_first_not_of()
find_last_not_of()
第一个参数 被搜寻的对象
第二个参数 搜寻起点
第三个参数 搜寻字符个数
12 npos 搜寻失败返回std::string::npos
使用string npos 检查返回值 应用型别string::size_type, 不能用int 或 unsigned 否则无法执行,因为npos=-1
避免错误的办法之一是直接检验搜寻是否失败
if (s.find("hi")==std::string::npos) {}
办法二是定义对于npos的正负号数值:
const int NPOS=-1; int idx=s.find("hi"); if(idx==NPOS)
13 string 迭代器为随机存取迭代器
14 strings 和 vectors
strings vectors 相似,都是一种动态数组
重要差异两者目标不同 strings:把整个容器视为整体 通常会为整个容器的复制和传递进行优化
vectors:处理容器内的元素,会对容器元素的操作行为进行优化
可以把vectors 当作c-strings来使用

浙公网安备 33010602011771号