STL总结之string

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() 

对配置器的支持:略(不常用)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值