C++的字符串


string类方法汇总

构造函数 产生或复制字符串

析构函数 销毁字符串

=、assign 赋予新值

swap 交换字符串

+=、append()、push_bash() 添加字符

insert() 插入字符

erase() 删除字符

clear() 移除全部字符

resize() 改变字符数目

replace() 替换字符

size()、length() 返回字符数目

max_size() 返回字符的最大可能个数

empty() 判断字符串是否为空

capacity() 返回重新分配前的字符容量

reserve() 保留内存以存储的一定数量字符

[]、at(n) 存取单一字符

>>、getline() 从stream读取某值

copy() 复制字符串

c_str() 将内容复制成char*

data() 将内容以字符串形式返回

substr() 返回子字符串

find() 查询子字符串或字符

begin()、end() 提供正向迭代器支持


#include <iostream>
#include <string>
using namespace std;
int main()
{
	string str("12345678");
	char   ch[]="abcdefgh";
	string  a;

	string str1(str);						//全复制
	string str2(str,2,5);					//从第2个复制到第5个
	string str3(ch,5);						//复制前5个元素
	string str4(5,'X');						//复制5个'XXXXX'
	string str5(str.begin(),str.end());		//全复制
	cout<<endl;
//大小和容量
	string str_num("12345678");

	cout<<"size="<<str_num.size()<<endl;
	cout<<"length="<<str_num.length()<<endl;
	cout<<"maxsize="<<str_num.max_size()<<endl;
	cout<<"capacity="<<str_num.capacity()<<endl;
	cout<<endl;
///访问
	string s("abcde");
	char& r = s[2];
	char* p = &s[3];
	r = 'X';
	*p = 'Y';
	cout<<s<<endl;
	cout<<endl;
比较
	string A("aBcdef");
	string B("AbcdEf");
	cout<<A.compare(B)<<endl;			//完全对比
	cout<<A.compare(1,5,B)<<endl;		//Bcdef和bcdEf
	cout<<A.compare(1,5,B,4,2)<<endl;	//Bcdef和Ef
	cout<<A.compare(2,2,B,2,2)<<endl;	//cd和cd
	cout<<endl;
/assign()
	string ss1("12345678");
	string ss2;
	ss2.assign(ss1);
	cout<<ss2<<endl;

	ss2.assign(ss1,3,3);
	cout<<ss2<<endl;

	ss2.assign(ss1,2,ss1.npos);
	cout<<ss2<<endl;

	ss2.assign(5,'X');
	cout<<ss2<<endl;

	ss2.assign(ss1.begin(),ss1.end());
	cout<<ss2<<endl;
	cout<<endl;
erase()
	string s_erase("12345678");
	s_erase.erase(3);						//删除第3个以后字符
	cout<<s_erase<<endl;

	string s_erase1("12345678");
	s_erase1.erase(3,2);					//删除第3个以后的两个字符
	cout<<s_erase1<<endl;
	cout<<endl;
//insert()
	string s_insert1("ello");
	string insert1("H");
	insert1.insert(1,s_insert1);
	cout<<insert1<<endl;

	insert1="H";
	insert1.insert(1,"yanjhj",3);
	cout<<insert1<<endl;

	insert1="H";
	insert1.insert(1,A,2,2);
	cout<<insert1<<endl;

	insert1="H";;
	insert1.insert(1,5,'c');
	cout<<insert1<<endl;
	cout<<endl;
//append()
	string s_append("ello");
	string append1("H");
	append1.append(s_append);
	cout<<append1<<endl;
	
	append1="HHH";
	append1.append("123456",1,3);
	cout<<append1<<endl;

	append1="H";
	append1.append(10,'a');
	cout<<append1<<endl;
	cout<<endl;
//repalce()

	string var("abcdefg");
	string re("123");
	var.replace(3,3,re);
	cout<<var<<endl;

	var = "abcdefg";
	re = "1234";
	var.replace(3,1,re.c_str(),1,3);
	cout<<var<<endl;

	var = "abcdefg";
	var.replace(3,1,5,'X');
	cout<<var<<endl;
	cout<<endl;
/find()
	string s_find("today,w will go to swing!");
	int num = s_find.find('w',9);				//从第9个字符开始搜索
	cout<<num<<endl;

	num = s_find.find('w',0);					//逆向搜索							
	cout<<num<<endl;

	return 0;
}



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值