string s; | 定義一個新的空string 對象,命名爲 s |
---|---|
string s(cp); | 定義一個新的 string 對象,用 cp 所指向的 C風格字符串初始化該對象 |
string s(s2); | 定義一個新的 string 對象,將其初始化爲 s2 的副本 |
is >> s; | 從輸入流 is 中讀取一個以空白字符分隔的字符串,寫入 s |
os << s; | 將 s 寫入到輸出流 os 中 |
getline( is, s); | 從輸入流 is 中讀取一行字符,寫入 s |
s1+ s2; | 將 s1 和 s2 串接起來,產生一個新的 string 對象 |
s1 += s2; | 將 s2 拼接在 s1 後面 |
關係操作符 | == != < <= > >= |
string 可以看成字符容器,同 vector 一樣,連續存儲,支持 capacity 和 reserve 操作。
支持 begin 、 end、 erase、 clear 等操作,
但是,不支持 push_front、back、front 等操作。
string s("Hello world");
string::iterator iter = s.begin();
while(iter!=s.end())
cout << *iter++;
cout << endl;
string s(cp, n) | 創建一個string 對象,它被初始化爲 cp 所指向數組的前 n 個元素的副本 |
---|---|
string s(s2, pos2) | 創建一個 string 對象, 它被初始化爲一個已經存在的 string 對象 s2 中從下標 pos2 開始的字符串副本 如果 pos2 > s2.size(); 則操作未定義 |
string s(s2, pos2, len2) | 創建一個 string 對象 它被初始化爲 s2 中從下標 pos2 開始的 len2 個字符的副本。 如果 pos2 > s2.size(); 則操作未定義 無論 len2 是多少,最多隻能複製 s2.size() - pos2 個字符 |
string s1;
string s2(5, 'a');
string s3(s2);
string s4(s3.begin(), s3.begin() + s3.size()/2);
char *cp = "Hiya";
char c_array[] = "world!!!!";
char no_null[] = {'H', 'i'};
string s5(cp); // "Hiya"
string s6(c_array, 5); // "world"
string s7(c_array+5, 4); // "!!!!"
// 錯誤:string s8(no_null); no_null 不是空字符結尾
string s8(no_null, 2);
// 注意與 string s6(c_array, 5); 的區別
string s9(s5, 2); // "ya"
string s10(s5, 0, 2); // "Hi"
string s11(s5, 0, 100); // "Hiya"
s.insert(pos, n, c) | 在下標爲 pos 的元素之前插入 n 個字符 c |
---|---|
s.insert(pos, s2) | 在下標爲 pos 的元素之前插入 string 對象的副本 s2 |
s.insert(pos, s2, pos2, len) | 在下標爲 pos 的元素之前插入 s2 中從下標 pos2 開始的 len 個字符 |
s.insert(pos, cp, len) | 在下標爲 pos 的元素之前插入 cp 所指向的數組的前 n 個字符 |
s.insert(pos, cp) | 在下標爲 pos 的元素之前插入 cp 所指向的以空字符結束的字符串的副本 |
s.assign(s2) | 用 s2 的副本替換 s |
s.assign(s2, pos2, len) | 用 s2 中從下標 pos2 開始的 len 個字符副本替換 s |
s.assign(cp, len) | 用 cp 指向的數組的前 len 個字符副本替換 s |
s.assign(cp) | 用 cp 指向的以空字符結束的字符串副本來替換 s |
s.erase(pos, len) | 刪除從下標 pos 開始的 len 個字符 |