c 知識點 標準string類

2021-09-24 19:34:41 字數 2507 閱讀 7375

【概念】

1、c++將字串視為基本資料型別,是c字串的替代物

2、理解:引號字串如"hello world"本質是c字串,c++會自動將其轉型為string型別的值

string s="hello world";//可將引號字串視為string型別的值

2、使用#include呼叫,位於std命名空間

3、通過操作符=賦值

4、通過操作符+連線字串,並具備自動擴容能力

string s1="hello",s2="c++",s3;

s3=s1+s2;//如果s1+s2長度超過s3,s3長度會自增

5、字串具有陣列特點(索引、長度、遍歷等),且能自動擴容

【初始化】

1、預設建構函式將string物件初始化為空字串

string nation;//初始化nation為空字串

2、引號字串為引數的建構函式,初始化值不以'\0'結束

string name("zhangsan");//初始化為與c字串"zhangsan"等價的字串值

3、直接使用賦值操作符=進行初始化

string name="zhangsan";//與上述表示式等價,

4、物件拷貝

string name(str);//name是str(為string物件)的拷貝

【i/o操作】

輸出:cout<>輸入時,只能讀入單詞(以空白字元定界的字串),不能讀取空白字元(被忽略或停止)。

特點:cin會忽略最初空白字元(空格、tab或換行),在輸入非空字元後,再次遇到空白字元時停止讀入

理解:若輸入□i□love□china!(其中□為空格),則a為i(前後□被刪除),b為love(同a)

2、使用getline(cin,line)輸入時,支援讀取整行

特點:(1)行中存在的首尾空格,也會成為讀取字串值的一部分;

(2)遇到結束符'\n'時停止;允許自定義結束符getline(cin,line,'?');//遇到?就停止

(3)getline通常視為void函式,但實際返回cin的引用,getline(cin,s1)>>s2;//等價於cin>>s2;

3、使用cin.get一次讀取乙個字元,

特點:(1)只能讀取char型別的值

(2)可相容不同的編譯器

char next;

do(next!='\n');//以回車操作結束

4、避免同時使用cin和getline,可通過cin.ignore檢查輸入資料

int n;

string line;

cin>>n;//輸入40後回車n=40,回車'\n'留給getline讀入

getline(cin,line);\\讀取'\n'後停止,實際為空字串

【字串處理】

1、拼接

string s="hello"+" "+"world";//使用操作符+實現過載轉換

理解:(1)字串常量"hello"作為c字串儲存(以'\0'結尾),

(2)c++操作符+有多個過載版本(找不到合適過載時,會通過某建構函式進行型別轉換)

2、獲取長度s.length();//自動獲取儲存位置數目

3、訪問元素s[i];//取得字串中編號為i的某字元(i從0開始)

(1)方式不檢查非法索引,檢查非法索引使用s.at(i)(i從0開始)

(2)s.substr(pos,length);//從pos位置返回length長度的字串

4、賦值/修改,使用s[i]或者s.at(i)

str.at(2)或str[2];//修改第3個字元

5、比較

基於詞典順序(ascii字元表)比較string物件,返回布林值,字元順序完全相同才返回true

6、非空判斷

s.empty();//返回布林值

7、插入字元

s.insert(pos,str);//從pos位置插入字串

8、刪除字元

s.erase(pos,length);//從pos位置刪除length長度的字串

9、查詢

s.find(str);//返回str在s中首次出現的索引,沒有則返回string::npos

s.find(str,pos);//從pos處開始,返回str在s中首次出現的索引

s.find_first_of(str,pos);

s.find_first_not_of(str,pos);

【轉換】

1、string物件轉c字串(使用s.c_str()顯式強轉)

char cstring="i love china";

cstring=s;//非法操作!!!賦值操作不適用於c字串

cstring=s.c_str();//合法

2、c字串轉string物件(c++執行自動型別轉換)

s=cstring;//合法

3、字串轉數值型別

stof();stod();stoi();stol();

4、數值型別轉換為string物件

s=to_string(3.2);

C 11 string類知識點

建構函式 char alls all s well that ends well string six alls 6,alls 10 begin end 像指標指向記憶體中兩個位置 乙個string物件 假設為five string seven five 6,five 10 不管用 物件名不同於陣列...

c 抽象類以及string知識點補充

在這個類當中,我們定義了乙個普通的虛函式,並且也定義了乙個純虛函式。純虛函式 從上面的定義可以看到,純虛函式就是沒有函式體,同時在定義的時候,其函式名後面要加上 0 1.在類成員方法的宣告 不是定義 語句前面加個單詞 virtual,她就會搖身一變成為虛函式。2.虛函式的宣告語句末尾中加個 0 她就...

c 小知識點記錄 string

c 小知識點記錄 字元判斷 isupper 是否為大寫字母 islower 是否為小寫字母 toupper 轉化為大寫字母 a toupper a 如果沒有賦值給a,a不會改變 tolower 轉化為小寫字母 isalpha 是否為字母 isalnum 是否為數字或者字母!isdigit 是否為數字...