string 详解

构造:

#include<string>
int main()
{
	string s0;  //空字符串
	string s1 {"As simple as that!"}; //用C风格字符串构造
	string s2 {s1};  //拷贝构造函数
	//析构函数几乎总是被隐式调用
	string s3 {7};  //错误: 没有string(int)
	string s4 {'a'};  //错误: 没有string(char);
	string s5 {7,'a'}; // 7个a
	string s6 {0};  //危险:传递nullptr
	const char* p = 0;
	string s7{p};  //可能正确也可能错误,取决于p的值。
	
	//string::npos 表示一个超出string长度的位置,通常用来表示string尾部。
	string ss {"Fleetwood Mac"};
	string ss2 {ss,0,9};  //"Fleetwood"
	string ss3 {ss,10,string::npos}; //"Mac"
	//注意,子串的表示方式是(位置,长度)而不是【开始,结束)。 
}

基本函数:
#include<string>
int main()
{
	s == s2;
	s != s2;
	s < s2;    //按字典序比较 
	s <= s2;
	s > s2;
	s >= s2; 
	
	n = s.size();  //n为s中的字符数(当前) 
	n = s.length();  //n = s.size()
	n = s.max_size();  //n为s.size()的最大可能值
	s.resize(n,c);  //令s.size() == n; 新增元素的值均为c
	s.resize(n);    //s.resize(n,C{})
	s.reserve(n);    //确保s不用分配更多空间即可保存n个字符
	s.reserve();    //无影响: s.reserve(0)
	n = s.capacity();  //s的容量(最大容纳数量) 
	s.shrink_to_fit()  //令s.capacity() == s.size() 
	s.clear();    //令s变为空
	s.empty();   //s为空?空的话返回true 
}


#include<string>
int main()
{
	s[i];   //(不进行范围检查)
	s.at[i]; //若s.size() <= i 抛出range_error
	s.front(); //s的第一个元素
	s.back(); // s的最后一个元素
	s.push_back(c); //追加字符c
	s.pop_back();  // 删除s的尾字符: s.esrase(s.size()-1)
	s+=x;  //在s的末尾追加x;x可以是一个字符,一个string,一个C风格字符串等等
	s = s1+s2; //连接
	s.swap(s2);  //交换s和s2的值
	swap(s,s2);  //同上。
	
	p = s.begin();	//类stl操作也可以用 
	p = s.end(); 
	
	s.assign(s2,pos,n)   //s获得字符s2[pos:pos+n)
	s.erase(pos,n); //删除s中从s[pos]开始的n个字符;s.size()变为max(pos,s.size()-n).
	
	s.repalce(); // 将一个子串替换成为另一个子串,并相应调整string大小。
	
	//x可以是一个字符,string,C风格的字符串等 
	pos = s.find(x);   // 在s中查找x;pos为匹配的第一个字符的下标或string::npos
	pos = s.rfind(x);  //逆序查找。未找到返回string::npos 
}



如何从string中找到特定元素并删除:

string str("ab'defg");
string::iterator it;
for (it =str.begin(); it != str.end(); ++it)
{
    if ( *it == '\'')
    {
        str.erase(it);
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值