定義和初始化string對象
初始化string對象方式
string s1? ?默認初始化,s1是一個空串
string s2(s1)? s2是s1的副本
string s2 = s1? 等價于s2(s1), s2是s1的副本
string s3("value")? s3是字面值"value"的副本,除了字面值最后的那個空字符外 //直接初始化
string? s3 = "value"? 等價于s3("value"),s3 是字面值"value" 的副本 //拷貝初始化
string s4(n,'c')? 把s4初始化為由連續n個字符c組成的串 //直接初始化
直接初始化和拷貝初始化? ?在上面的初始化方式中有說明
?
string 對象上 操作
?String? 的empty和size操作
empty判斷string對象是否為空,返回值為布爾值
size函數返回string對象的長度
比較string對象
運算符都依照大小寫敏感的字典順序來進行比較。
兩個string對象相加
兩個string對象相加得到一個新的string對象。其內容是左側運算對象和右側運算對象串接而成,類似于: "hello" + "world" = "hello world";
字面值和string對象相加
當把string對象和字符字面值及字符串字面值混在一條語句中使用時,必須要保證每個加法運算符的兩側的運算對象至少有一個是string
string s5 = "hello" + ",? "? //錯誤,兩個對象都不是string,不能把字面值直接相加。
處理string對象中的字符
?使用基于范圍的for語句處理每個字符
string str("some string");
for(auto c:str )
cout<<c<<endl;? //將str字符串中的每個字符每行一個輸出出來。
使用范圍for語句改變字符串中的字符
string s("HELLO WORLD"); for (auto &c : s) //注意這里的c前有& c = toupper(c);
這里的c是引用,賦值語句將改變s中的字符的值。
只處理一部分字符:
下標運算符:s[i] 直接改
下標執行迭代(就是在for循環中加控制條件,將要更改的字符提取出來更改就OK了)
使用下標執行隨機訪問
一個小練習:
?
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int main() 7 { 8 string str("extraordinary"); 9 10 for (auto &c : str) 11 { 12 c = 'x'; 13 } 14 cout << str << endl; 15 16 system("pause"); 17 return 0; 18 }
?
?