STL 中還有一個字元串類
初始化
string
類的初始化非常簡單直接,另外在現代的C++中不建議再使用老的
char*
了。
初始化也可以是複制另一個字元串
-
:string s(str)
是s
的複制。str
-
:string s(str, strbegin, strlen)
是s
始于 strbegin 長為 strlen 的複制。str

string 類的初始化方法
string s1 = "123";
string s2;
cin >> s2; // 從輸入台讀入 s2 的内容
getline(cin, s2);
比較
string
類重載了運算符,是以可以直接用
==
,
>
等符号進行字元串的比較。
bool equal = (str == "1234"); // true
類方法
向字元串末尾添加可以直接使用
+=
運算符,也可以使用
append
、
push_back
這種函數。
string str = "123";
str += "4"; // +=, append(), push_back()都可以用來添加字元
可以用
empty()
方法判斷字元串是否為空。
size()
和
length()
方法都可以傳回字元串的長度。
bool empty = str.empty();
用
substr
方法截選子串
str.substr(str.length()-6, 6); // 截取後6位子串
str.substr(1, 5); // 從第 1 位開始,截選長度為 5 的子串。(第一個參數不能越界,第二個參數可以越界)
// str.substr(str.size(), 10) 是空串, str.substr(str.size() + 1, 10) 會報錯
data()
方法将内容以
字元數組形式傳回,類似于Java的
toCharArray()
方法。
reserve()
方法:保留記憶體以存儲一定數量的字元
string
類還支援疊代器。
string
類可以用
[]
去取一個單獨的字元,傳回的是一個
char
類型的引用,可以用這種方式修改
string
。(注意不要像Python那樣用一個slice, [1:3]這樣,去截選子串哦)
char c = str[0];
for (char c : str) {
// do sth.
}
algorithm包下的方法
- 可以對字元串裡的
字元進行排序:char
sort(s.begin(), s.end());
- 删除字元串的一個子串:
s.erase(s.begin(), s.begin() + 3);
- 字元串逆序
reverse(s.begin(), s.end());