string
#include <string>
namespace std{
template<class charT,
class traits = char_traits<charT>,
class Allocator = allocator<charT> > //采用缺省的内存模型allocator
class basic_string;
}
namespace std{
typedef basic_string<char> string;
}
namespace std{
typedef basic_string<wchar_t> wstring;
}
构造函数和析构函数:
string s;
string s(str);
string s(str,stridx);
string s(str,stridx,strlen); // 从位置stridx开始
string s(cstr);
string s(chars,chars_len); // 前chars_len个字符
string s(num,c);
string s(beg,end);
s.~string();
注意:std::string s('x'); // error
std::string s(1,'x'); // ok
大小和容量:
size(); length();empty(); max_size();capacity(); reserve();// 非强制性适度缩减请求 reserve(n)
比较:
bool comparison(const string& str1,const string& str2);
bool comparison(const string& str,const char* cstr);
bool comparison(const char* cstr,const string& str);
compare(str)
compare(idx,len,str)
compare(idx,len,str,str_idx,str_len)
compare(cstr)
compare(idx,len,cstr)
compare(idx,len,cstr,chars_len)
字符存取:
[ ] ; at() ; // const
产生C-string和字符数组:
c_str() // 尾部添加\0, 返回值隶属于该string,所以调用者不能修改、释放或删除该返回值。
data() // 以字符数组的形式返回,结尾不添加\0,返回值隶属于该string
copy(buf,size)
copy(buf,size,idx) // 不添加NULL字符,将*this从idx开始最多size个字符复制到字符数组 buf 中。
赋值:
assign(str) or = str
assign(str,idx,num)
assign(cstr) or = cstr // 赋值不包括结尾的\0
assign(cstr , len) // \0无特殊意义
assign(num , c) or = (c)
swap(str) or swap(str1,str2);
添加字符:
append(str) or += str
append(str , idx , num)
append(cstr) or += cstr
append(cstr , len) // \0无特殊意义
append(num , c)
append( beg , end )
push_back(c) or += c
安插字符:
insert( idx , str )
insert( idx , cstr )
insert( idx , str , str_idx , num )
insert(idx,cstr,len)
insert(idx,n,c)
insert(pos,n,c) // 当以0为第一参数,可被视为索引或迭代器,导致模棱两可,因此需明确告知:s.insert((std::string::size_type)0,1,' ');
insert(pos,c)
insert(beg,end)
擦除字符:
clear() or erase() // 删除字符串的所有字符,调用后字符串为空
erase(idx)
erase(idx,len)
erase(pos)
erase(beg,end)
改变大小:
resize(num)
resize(num,c)
替换字符:
replace(idx,len,str)or replace(beg,end,str)
replace(idx,len,str,str_idx,str_num)
replace(idx,len,cstr)or replace(beg,end,cstr)
replace(idx,len,cstr, str_len)or replace(beg,end,cstr, str_len)
replace(idx,len,num,c)or replace(beg,end,num,c)
replace(beg,end,newBeg,newEnd)
搜寻:
查找单一字符:
find(c) find(c,idx) // rfind
查找子字符串:
find(str) find(str,idx) // rfind
find(cstr) find(cstr,idx) // rfind
find(cstr,idx,cstr_len) // rfind
查找第一个匹配字符:
find_first_of(str)
find_first_of(str,idx)
find_first_not_of(str)
find_first_not_of(str,idx) // 从索引idx开始查找*this中(不)属于str的第一个字符
// 将以上四个str变为cstr、c
find_first_of(cstr,idx,len)// 从idx处开始查找*ths中属于“字符数组cstr内的前len个字符”的第一个字符
find_first_not_of(cstr,idx,len)
查找最后一个匹配字符:
// 将以上first 变为 last
子字符串及字符串接合:
substr()
substr(idx)
substr(idx,len) // 返回*this中从 idx 开始的最多 len 个字符组成的子字符串
s = str1 + str2;
s = str + cstr;
s = cstr + str;
s = str + c;
s = c + str;
i/o函数:
<< , >>
getline(cin,str);
getline(cin,str,char); // 视情况重新分配内存
迭代器:
begin(), end() , rbegin() , rend()
对配置器的支持:略(不常用)