string s 生成一个空字符串s
string s(str) 拷贝构造函数,生成str对象的复制品
string s(str,stridx) 将字符串str对象内"始于位置stridx"的部分当作字符串的初值
string s(str,stridx,strlen) 将字符串str对象始于stridx且最长为strlen部分作为字符串的初值
string s(cstr) 将C字符串作为s的初值
string s(chars,chars_len) 将C字符串前chars_len个字符作为字符串s的初值
string s(num,c) 生成一个字符串,包含num个c字符
string s(beg,end) 以区间(迭代器iterator )beg到end(不包含end)内的字符作为字符串s的初值
s.~string() 销毁所有字符,释放内存
重载=操作符
basic_string& operator=(const basic_string& rhs)
basic_string& operator=(const E *s)
basic_string& operator=(E c)
string对象= string对象 / 字符串("gaint") / 字符( ' j ')
assign()函数
s.assign(str) 把str对象赋给s对象
s.assign(str,pos,n) 把string 对象中从(下标)pos的后n个元素赋值给s
s.assign(str,pos,string::npos) 把字符串str从索引值p开始到结尾赋给s
s.assign(char_string) 把字符串赋值给s对象
s.assign(char_string,num) 把字符串前num个字符'赋给s对象
s.assign(first,last) 把(迭代器iterator )first和last之间的部分赋给字符串
s.assign(num,char_x) 把num个字符赋给s对象
void swap(basic_string& str) 把s与str对象的内容交换
重载+= 操作符
basic_string& operator+=(const basic_string& rhs)
basic_string& operator+=(const E *s)
basic_string& operator+=(E c)
string对象+= string对象 / 字符串("gaint") / 字符( ' j ')
append()函数
s.append(str) 把str对象t添加到s对象末尾
s.append(str,pos,num) 把string对象中从(下标)pos的后num个元素添加到s对象末尾
s.append(char_string) 把字符串添加到s对象末尾
s.append(char_string.num) 把字符串的前num个字符添加到s对象末尾
s.append(first,last) 把(迭代器iterator )first到last中的元素添加到s末尾
s.append(num,char_x) 把num个字符添加到s对象末尾
push_back()函数
s.push_back(char_x) 把单个字符添加到s的尾部,这个函数只能增加单个字符
insert()函数
basic_string& insert(size_type p0,const basic_string& str)
basic_string& insert(size_type p0,const basic_string& str, size_type pos, size_type n)
basic_string& insert(size_type p0,const E *s, size_type n)
basic_string& insert(size_type p0, const E *s)
basic_string& insert(size_type p0, size_type n, E c)
iterator insert(iterator it, E c)
void insert(iterator it, size_type n, E c)
void insert(iterator it,const_iterator first, const_iterator last)
basic_string& erase(size_type p0 = 0, size_type n = npos)
iterator erase(iterator it)
iterator erase(iterator first, iterator last)
const E *c_str() const 将内容以C_string返回,一个以'\0'结尾的字符数组
s.replace(pos ,num , str ) 用str代替s中从pos开始的num个字符
s.replace(pos ,num , chars) 用字符串代替s中从pos开始的num个字符
s.replace(pos1,num1,str,pos2, num2) 用str中从pos2开始的num2个字符,代替s中从pos1开始的 num1个字符
s.replace(pos1,num1,chars, num2 ) 用字符串中num2个字符,代替s中从pos1开始的num1个字符
s. replace(pos,num,count,char) 用count个字符,代替s中从 pos开始的num个字符
s.replace(First,Last,str ) 用 string 代替s中从(迭代器iterator)First到Last的字符
s.replace(First,Last,chars) 用字符串代替s中从(迭代器iterator)First到Last的字符
s.replace(First0,Last0,chars, num ) 用字符串的num个字符,代替s中从(迭代器iterator )First到Last的字符
s.replace(First0,Last0,First,Last ) 用(迭代器iterator)First开始到Last的字符,代替s中从(迭代器iterator )First0到Last0的字符
s.replace(First,Last,count,char) 用count个字符,代替s中从(迭代器iterator )First到Last的字符
==
!=
<
<=
>
>=
支持string与c_string的比较(如 str<"hello"),字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。同时,string ("aaaa")
int compare(const basic_string& str) const;
int compare(size_type p0, size_type n0,const basic_string& str
int compare(size_type p0, size_type n0,const basic_string& str, size_type pos, size_type n)
int compare(size_type p0, size_type n0,const E *s) const
int compare(const E *s) const
int compare(size_type p0, size_type n0,const E *s, size_type pos) const
size_type size() const
size_type length() const
返回字符数量,他们等效
size_type max_size() const 返回字符串的可能最大个数,C++字符串最多能包含的字符数,很可能和机器本身的限制或者字符串所在位置连续内存的大小有关系
booempty() const 判断字符串是否为空
void resize(size_type n, E t = E()) 重新指定字符数组长度的长度为n,元素值为t
size_type capacity() const 返回重新分配之前的字符容量
void reserve(size_type n = 0) 保留一定量内存以容纳一定数量的字符,这个函数为string重新分配内存,重新分配的大小由其参数决定,默认参数为0,这时候会对string进行非强制性缩减
const_reference at(size_type pos) const
reference at(size_type pos)
const_reference operator[](size_type pos) const
reference operator[](size_type pos)
>>
getline()
从stream读取某值
<< 将谋值写入stream
size_type copy(E *s,size_type n, size_type pos = 0) const 将某值赋值为一个C_string,把字符串的内容复制或写入既有的c_string或字符数组内
const E *data() const 将内容以字符数组形式返回,但并不添加’\0’
basic_string substr(size_type pos = 0, size_type n = npos) const
这些函数返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos.所有的函数的参数说明如下:第一个参数是被搜寻的对象.第二个参数(可有可无)指出string内的搜寻起点索引,第三个参数(可有可无)指出搜寻的字符个数
size_type find(const basic_string& str,size_type pos = 0) const
size_type find(const E *s, size_type pos, size_type n) const
size_type find(const E *s, size_type pos = 0) const
size_type find(E c, size_type pos = 0) const
size_type find(E c, size_type pos = 0) const
size_type rfind(const basic_string& str,size_type pos = npos) const
size_type rfind(const E *s, size_type pos,size_type n = npos) const
size_type rfind(const E *s, size_type pos = npos) const
size_type rfind(E c, size_type pos = npos) const
size_type find_first_of(const basic_string& str,size_type pos = 0) const
size_type find_first_of(const E *s, size_type pos,size_type n) const
size_type find_first_of(const E *s, size_type pos = 0) const
size_type find_first_of(E c, size_type pos = 0) const
size_type find_last_of(const basic_string& str,size_type pos = npos) const
size_type find_last_of(const E *s, size_type pos,size_type n = npos) const
size_type find_last_of(const E *s, size_type pos = npos) const
size_type find_last_of(E c, size_type pos = npos) const
size_type find_first_not_of(const basic_string& str,size_type pos = 0) const
size_type find_first_not_of(const E *s, size_type pos,size_type n) const
size_type find_first_not_of(const E *s, size_type pos = 0) const
size_type find_first_not_of(E c, size_type pos = 0) const
size_type find_last_not_of(const basic_string& str,size_type pos = npos) const
size_type find_last_not_of(const E *s, size_type pos,size_type n) const
size_type find_last_not_of(E c, size_type pos = npos) const
size_type find_last_not_of(const E *s,size_type pos = npos) const
正向迭代器
返回配置器
逆向迭代器
string::npos string::npos的类型是string::size_type,所以,一旦需要把一个索引与npos相比,这个索引值必须是string::size_type类型的.是类的静态成员,更多的情况下,我们可以直接把函数和npos进行比较(如:if(s.find("jia")== string::npos))
..............................................................................................................................................................
const string Cstr("const string");
string Str("string");
Str[3]; //ok
Str.at(3); //ok
Str[100]; //未定义的行为
Str.at(100); //throw out_of_range
Str[Str.length()] //未定义行为
Cstr[Cstr.length()] //返回 ‘\0’
Str.at(Str.length());//throw out_of_range
Cstr.at(Cstr.length()) throw out_of_range