1. 程式人生 > 其它 >string 容器---賦值、存取字元、拼接操作

string 容器---賦值、存取字元、拼接操作

string 容器

string 容器

string容器標頭檔案include"string"

String和c風格字串對比:

  • Char* 是一個指標,String是一個
    string封裝了char*,管理這個字串,是一個char*型的容器
  • String封裝了很多實用的成員方法
    查詢find,拷貝copy,刪除delete 替換replace,插入insert
  • 不用考慮記憶體釋放和越界
    string管理char*所分配的記憶體。每一次string的複製,取值都由string類負責維護,不用擔心複製越界和取值越界等。

string賦值操作

#include"string"
#include"bits/stdc++.h"
using namespace std;
//string& operator=(const char* s);//char*型別字串 賦值給當前的字串
//string& operator=(const string &s);//把字串s賦給當前的字串
//string& operator=(char c);//字元賦值給當前的字串
//string& assign(const char *s);//把字串s賦給當前的字串
//string& assign(const char *s, int n);//把字串s的前n個字元賦給當前的字串
//string& assign(const string &s);//把字串s賦給當前字串 //string& assign(int n, char c);//用n個字元c賦給當前字串 //string& assign(const string &s, int start, int n);//將s從start開始n個字元賦值給字串 void fz(){ string st1; st1="hello world!"; cout<<"st1="<<st1<<endl; string st2;
st2=st1; cout<<"st2="<<st2<<endl; string st3; st3='b'; cout<<"st3="<<st3<<endl; string st4; st4.assign("hello C++"); cout<<"st4="<<st4<<endl; string st5; st5.assign("hello C++",3); cout<<"st5="<<st5<<endl; string st6; st6.assign(st5); cout<<"st6="<<st6<<endl; string st7; st7.assign(3,'f'); cout<<"st7="<<st7<<endl; } using namespace std; int main(){ fz(); return 0; }

執行結果:
在這裡插入圖片描述

string存取字元操作

#include"bits/stdc++.h"
using namespace std;
//存取字元操作 
//char& operator[](int n);//通過[]方式取字元
//char& at(int n);//通過at方法獲取字元

void fz(){
	string st1="hello c++";
	
	//1.通過[]訪問單個字元
	for(int i=0;i<st1.size();i++){
		cout<<st1[i]<<" ";
	} 
	cout<<endl;
	
	
	//2.通過at方式訪問單個字元
	for(int i=0;i<st1.size();i++){
		cout<<st1.at(i)<<" ";
	} 
	cout<<endl;
	 
}
using namespace std;
int main(){
	fz();
	return 0;
} 

執行結果:
在這裡插入圖片描述

string拼接操作

#include"bits/stdc++.h"
using namespace std;
//string& operator+=(const string& str);//過載+=操作符
//string& operator+=(const char* str);//過載+=操作符
//string& operator+=(const char c);//過載+=操作符
//string& append(const char *s);//把字串s連線到當前字串結尾
//string& append(const char *s, int n);//把字串s的前n個字元連線到當前字串結尾
//string& append(const string &s);//同operator+=()
//string& append(const string &s, int pos, int n);//把字串s中從pos開始的n個字元連線到當前字串結尾
//string& append(int n, char c);//在當前字串結尾新增n個字元c

void pj(){
	//1.string& operator+=(const string& str);//過載+=操作符
	string str1="hello ";
	const char *str2="world";
	str1+=str2;
	cout<<str1<<endl;
	
	
	//2.string& operator+=(const char* str);//過載+=操作符
	string str3("HeELLO");
	const char *B="EORLD";
	str3+=B;
	cout<<str3<<endl;
	
	
	//3.string& operator+=(const char c);//過載+=操作符
	string str("hello a");
	char c='!';
	str+=c;
	cout<<str<<endl;
	
	
	//4.string& append(const char *s);//把字串s連線到當前字串結尾
	string str4="ok";
	const char *d="OK";
	str4.append(d);
	cout<<str4<<endl;
	

	//5.string& append(const string &s);//同operator+=()
	
	

	//6.string& append(const string &s, int pos, int n);//把字串s中從pos開始的n個字元連線到當前字串結尾
    string str6("My name is ");
    string temp("Joe!");
    //注意,string類中首元素下標也為0
    //該函式中第三個引數應該是希望擷取的字串末尾下標+1,不是末尾下標本身
    //就是說這個函式會擷取第三個引數之前到第二個引數之間的字串
    //不包含第三個引數所指向下標的字元
    str6.append(temp, 0, 4);//為了接上最後的感嘆號字元,第三個引數是4而不是3
    cout << str6 << endl;
    //system("pause");



	//7.string& append(int n, char c);//在當前字串結尾新增n個字元c
    string str7="My name is ";
    char g='!';
    str7.append(5,'!');
    cout << str7 << endl;	 
}
using namespace std;
int main(){
	pj();
	return 0;
} 

執行結果:
在這裡插入圖片描述