標準庫型別string

2021-07-26 20:33:21 字數 2770 閱讀 8914

標準庫型別string是一種可變長的字串行。vector和迭代器也是標準庫型別,vector表示可變長的集合。

初始化string物件

初始化string物件有多種方法,如:

string s1;//預設初始化,定義乙個空字串

string s2 = 「hello」;//拷貝初始化,s2是字串字面值的副本

string s3 = s2;//s3是s2的副本

string s4(10,'n');//直接初始化,s4表示含有10個n的字串即nnnnnnnnnn

string物件上的操作

乙個string類規定了初始化其物件的方式,還定義通過函式名呼叫的操作,以及定義各種運算子在該類物件上。

如:讀寫string物件、string的empty和size操作、比較string物件、兩個string物件的相加等等

讀寫string物件

1 可以使用io操作符讀寫string物件,如:

string s1;

cin >> s1;

cout << s1 << endl;//值得注意的是string物件對輸入操作時,自動忽略開頭處的空白,則直到遇到第二個空白處結束。

2 讀取未知數量的string物件

string s2;

while(cin >> s2)

cout << s2 << endl;//直到遇到結束標誌符,才會退出while迴圈

3 使用getline讀取一整行

string s3;

while(getline(cin,s3))//getline只要一遇到換行符就結束讀取操作並返回結果

cout << s3 << endl;//替代輸入流操作符

string的empty和size操作

string類中包含供其使用的函式,其中包括empty和size函式。

empty函式根據string物件是否為空返回乙個bool型別,當為空返回true。

如:string s4;

while(getline(cin,s4))

if(s4.empty())

cout << s4 << endl;

size函式返回string物件的長度,size函式返回的引數型別為string::size_type的型別

如:string s5 = "hello world";

if(s5.size() > 3)//判斷string物件的字元

cout << s5 << endl;//列印s5中超過第三個字元的內容

比較string物件

string物件可以實現對 相等性運算子 == 和!= 、關係運算子 < 、<=、>、>=的操作。

兩個string物件的相加

兩個string物件相加得到乙個新的string物件,即將等號左側的運算物件與右側的運算物件串聯起來,但注意與字面值時的相加。 如:

string s6 = "hello";

string s7 = "moto";

string s8 = s6 + s7;//s8的內容為 hellomoto

但注意字面值與string物件的相加

string s9 = "c++",s10 = "primer";

string s11 = s9 + "," + s10 + '\n';//將string物件和字元字面值及字串字面值混在一起,必須保證每個加法運算子的兩側運算物件至少有乙個string。

處理string物件中的字元

我們需要程式來處理string物件中的字元,一般可以分為處理全部字元(包含查詢和改變)、處理其一部分字元。則會根據需要的不同,處理的方法也會不同。

在標準庫中定義了許多處理字元的函式,是在cctype的標頭檔案中定義的。

處理全部字元(並不改變物件中的字串內容)

一般採用範圍for語句,使用遍歷給定序列的方法。如:

string str1 = "some string";

for(auto c : str1)//str1物件會每次初始化變數c,然後一一列印出來

cout << c << endl;

處理全部字元(改變物件中的字串內容)

如果想要改變string物件中字元的值,必須把迴圈變數定義為引用型別,如:

string str2("hello world!")

for(auto &c : str2)

c = toupper(c);

cout << str2 << endl;//此處迴圈變數使用了引用型別,意思就是變數c是str2的別名,通過toupper()函式改變變數c中的值,實則是改變string物件str2的值。

處理其一部分字元

處理string物件中的字元有兩種方法,一種是使用下標運算子,另一種是使用迭代器。

下標運算子表示訪問的字元的位置,返回值是該位置上字元的引用。如:

string str3("some string");

if(str3.empty())

str3[0] = toupper(str3[0]);

coutstr3[index] = toupper(str3[index]);

標準庫String型別

1 string物件的讀寫 用iostream標準庫可以用於讀寫內建型別如int double等的值,同樣也可以用iostream和string標準庫,使用輸入輸出操作符來讀寫string物件 注 從標準輸入讀取string,並將讀入的串儲存在s中。string型別的輸入操作符 另外還有乙個有用的s...

標準庫 string 型別

從標準輸入讀取 string 並將讀入的串儲存在 s 中。string 型別的輸入操作符 讀取並忽略開頭所有的空白字元 如空格,換行符,製表符 讀取字元直至再次遇到空白字元,讀取終止。輸入 hello world 則螢幕上將輸出 hello 而不含任何空格。這個函式接受兩個引數 乙個輸入流物件和乙個...

標準庫型別string

include using namespace std string定義在命名空間std中文件 string標準庫 string是乙個內部定義的類,初始化類物件的方式是通過類內部定義的構造方法決定的。下面列出幾個string常用的初始化方式 string s1 預設的初始化方式,s1是乙個空串 st...