string操作

//删除操作 erase

#include<iostream>
#include<string>

using namespace std;
int main()
{

	string name( "AnnaLiviaPlurabelle" );
	//生成字符串Annabelle

	typedef string::size_type size_type;

	//用一对迭代器iterator 作参数标记出要被删除的字符的范围
	size_type start_pos = name.find_first_of('L');
	size_type end_pos = name.find_last_of('a');

	name.erase(name.begin()+start_pos,name.begin()+end_pos+1);
	
	cout<<name<<endl;
	return 0;
}

程序2,插入操作

#include<iostream>
#include<string>

using namespace std;
int main()
{

	string love("I love you!");

	string::size_type pos=love.find_first_of(' ');

	love.insert(pos," really");

	//insert()操作也支持插入new_string的一个子部分

	cout<<love<<endl;
	love+=' ';//追加空格

	string new_string("It's funny.");

	string::size_type start_pos=new_string.find_first_of(' ');//要插入的字串开始位置
	string::size_type length=3;//要插入的字串长度

	love.insert(love.size(),new_string,start_pos+1,-1);//如果想插入从start_pos开始的整个子串,length值(变为负)

	cout<<love<<endl;

	return 0;
}

程序3.追加与赋值,交换,at()等操作

#include<iostream>
#include<string>

using namespace std;
int main()
{

	string s1( "Mississippi" ); 
	string s2( "Annabelle" );

	string s3;

	//拷贝s1的前四个字符
	s3.assign(s1,0,4);

	cout<<s3<<endl;
	s3+=' ';
	s3.append(s2,0,4);//追加s2的前四个字符到s3
	
	cout<<s3<<endl;

	//交换两个字符串对	
	s1.swap(s2);
	cout<<s1<<"  "<<s2<<endl;

	//at函数提供了越界检查

	char t=s3.at(77);//此处应用try catch包括,以后会学到
	cout<<t<<endl;

	return 0;
}

程序4.replace操作

#include<iostream>
#include<string>

using namespace std;
int main()
{

	string sentence("An ADT provides both interface and implementation." ); 
	string::size_type position = sentence.find_last_of( 'A' ); 
	string::size_type length = 3; 
	// 用Abstract Data Type 代替ADT 
	sentence.replace( position, length, "Abstract Data Type" ); 

	cout<<sentence<<endl;

	//小练习
	string quote1( "When lilacs last in the dooryard bloom" ); 
	string quote2( "The child is father of the man" ); 

	//用assign()和append()操作构造字符串The child is in the dooryard
	string quote3;

	string::size_type pos=quote2.find_first_of('f');
	

	string::size_type start_pos=quote1.find_last_of('i');
	string::size_type end_pos=quote1.find_last_of('b');
	cout<<end_pos<<endl;

	quote3.assign(quote2,0,pos).append(quote1,start_pos,end_pos-start_pos);
	cout<<quote3<<endl;
	
	return 0;
}

程序5.练习

实现下面的函数

string generate_salutation( string generic1,  string lastname,   string generic2,   string::size_type pos, int length)

#include<iostream>
#include<string>

using namespace std;

string generate_salutation( string generic1,  string lastname,   string generic2,   string::size_type pos, int length)
{
	string::size_type position=generic1.find_last_of('D');
	int len=5;

	string::size_type start_pos=generic1.find_first_of('M');
	string::size_type end_pos=generic1.find_last_of(' ');
	//要用end_pos-start_pos计算获得要被替换的字串长度并作为第二个参数传入
	generic1.replace(position,position+len,lastname).replace(start_pos,end_pos-start_pos,generic2,pos,length);

	return generic1;
}
int main()
{

	string generic1( "Dear Ms Daisy:" ); 
	string generic2( "MrsMsMissPeople" );

	string result=generate_salutation(generic1,"Yangxiaoli",generic2,5,4);

	cout<<result<<endl;
	
	return 0;
}




你可能感兴趣的:(C++,String,基本操作)