C++:常用的string類字符串函數(二)

想了解字符串string類的基本用法,可參見:C++:string類的基本用法(一)


常用的字符串函數包括:複製、拼接、查找字符、截短、反轉、大小寫轉換等。使用這些字符串函數,能夠輕鬆的解決很多字符串操作問題,並且使你的代碼變得更加簡潔可讀。

1 拼接字符串append()

要將兩個字符串拼接在一起,可以使用運算符+=,也可以使用成員函數append():

#include<iostream>
#include<string>
using namespace std;

int main()
{
	string s1("I love");
	string s2(" you!");
	//方法1:+=
	s1+=s2;
	cout<<s1<<endl;
	//方法2:append()
	string s3(" I love you very much!");
	s1.append(s3);
	cout<<s1<<endl;
	return 0;
} 

2 查找字符或者子字符串find()

string類的成員函數find,可以用來查找字符串中的字符和子字符串,比如:

//從索引爲n的位置開始,查找字符串s1中的子串s2,並返回給pos。(其中,s2可以是字符也可以是子字符串)
int pos=s1.find(s2,n);
#include<iostream>
#include<string>
using namespace std;

int main()
{
	string s1("I love you! and do you love me?");
	cout<<"s1:"<<s1<<endl;
	
	//1.從最開始處開始搜索,返回字符串love第一次出現的位置 
	size_t position= s1.find("love",0);
	if(position!=string::npos) //string:npos實際值爲-1,表示沒有找到要搜索的元素
		cout<<"字符串love第一次出現的位置:"<<position<<endl;
	else
		cout<<"字符串love沒有被找到"<<endl; 
		
	//2.返回所有子字符串的位置
	cout<<"字符串love出現的所有位置:"; 
	size_t all_pos=s1.find("love",0);
	while(all_pos!=string::npos)
	{
		cout<<all_pos<<" ";
		size_t  search_pos=all_pos+1;
		all_pos=s1.find("love",search_pos); //返回子字符串出現的位置 
	} 
	return 0;
} 

3 截短字符串erase()

(1)給定偏移位置(刪除的起始位置)和要刪除的字符個數。

string s1 = "I love you very much!"
s1.erase(2,4); //從索引號2開始,刪除4個字符,即刪掉love。

(2)在給定指向字符的迭代器時刪除該字符

//刪除字符串s1中的所有的字符'I'
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
	string s1("I love you! and do you love me?");
	string::iterator pos = find(s1.begin(),s1.end(),'I'); //找到字符'I'的位置給迭代器
	if(pos!=s1.end())
		s1.erase(pos); //依次刪除迭代器指向的字符
	cout<<s1<<endl;
	return 0;
} 

(3)在給定兩個迭代器指定的範圍時,刪除該範圍內的字符

s1.erase(s1.begin(),s1.end());

4 字符串反轉reverse()

所謂反轉,就是首位倒序存放。比如要判斷某字符串是否是迴文串,就可以將其反轉,再與原來的字符串進行比較。

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
	string s1("I love you!");
	reverse(s1.begin(),s1.end());  //將s1進行反轉
	cout<<s1;
	return 0;
} 

5 大小寫轉換transform()

//1.將字符串s1轉換爲大寫
transform(s1.begin(),s1.end(),s1.begin(),toupper);
//2.將字符串s1轉化爲小寫
transform(s1.begin(),s1.end(),s1.begin(),tolower);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章