string 容器---賦值、存取字元、拼接操作
阿新 • • 發佈:2021-01-26
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;
}
執行結果: