string s1; // 構造空的string類物件s1
string s2("hello"); // 用c格式字串構造string類物件s2
string s3(s2); // 拷貝構造s3
s.size() //返回字串有效字元長度
s.capacity() //返回總空間大小
s.empty() //判斷字串是否為空,為空返回true
s.clear() //清空有效字元,不改變空間大小
注意:resize在改變元素個數時,如果是將元素個數增多,可能會改變底層容量的大小,如果是將元素個數減少,底層空間總大小不變 。
s.resize(8) //重新設定s字串的有效個數為8,更改的是size
s.resize(10,'x') //重新設定字串有效字元的長度為10,並且多餘位置用x填充
reserve(size_t res_arg=0):為string預留空間,不改變有效元素個數,當reserve的引數小於string的底層空間總大小時,reserver不會改變容量大小
s.reserve(100) ; //reserve更改的是capacity容量
operator
string s1("hello!");
s.[0]; //類似c陣列方括號操作
sring::iterator it = s.begin();
while(it != s.end())
{cout<<*it《使用範圍for遍歷:
for(auto ch : s)
cout << ch << endl;
s.push_back(' '); // 在s後插入空格
s.pop_back(' '); //在s前插入空格
string s2;
string s3;
還可以使用operator+=:
s += 'a'; // 在s後追加乙個字元a
s += "bc"; // 在s後追加乙個字串bc
coutstring f("string.cpp");
//find是從前往後找,找到返回位置,沒找到返回npos,npos是乙個非常大的正數
size_t pos = f.rfind('.'); //rfind從後往前找字元'.'
//sbustr函式在字串中從pos位置開始,擷取n個字元,然後將其返回。
string sf(f.substr(pos, f.size()-pos));
cout << sf << endl;
刪除介面:
string s("hello");
s.erase(0, 2); // 從0位置開始,刪除兩個元素
//(如果內容太短或len是string::npos,則直到字串結束)
s.erase(s4.begin()); //刪除第乙個字元
s.erase(s4.end()); //刪除最後乙個字元
s.erase(s4.begin(), s4.end()); //刪除從頭到尾的所有字元
賦值介面:
s.assign("11111"); //相當於s = 11111;原本s中的內容被覆蓋
插入insert介面:
string s1;
string s2("hello");
s1.insert(0,"abcdefg") //從s1的0位置開始插入字串
s1.insert(3, 5, "abcdefg") //從3位置開始只插入字串的前5個字元
s1.insert(3, 6, "h") //從3位置開始插入6個h
s1.insert(0, s2); //字串s1從0位置開始插入s2
s1.insert(0, s2, 2, 3);
//從s1的0位置開始,把字串s2的第2個位置複製3個字元插入
s4.insert(s4.end(), 3, 'a'); //也可以使用迭代器插入,尾插3個a
s4.insert(s4.end(), strarr + 1, strarr + 3);
//插入str從第2個位置開始到第4個位置結束
replace替換介面:
string s = "0123456789";
s.replace(3, 5, "aa"); //從索引為3的位置替換5個字元換成aa,012aa89
s.replace(s.begin() + 1, s.end() - 1, "0");
//把從頭後乙個位置,到尾前乙個位置替換成0;
swap交換介面:
//string類中有乙個swap成員函式,但在類外也有個swap全域性函式,這個全域性swap是個泛型函式,可以自動匹配引數型別
string s = "abc";
string s1 = "jkl";
s.swap(s1); //呼叫string成員函式
swap(s2, s); //呼叫全域性string型別的swap函式,內部呼叫string的成員函式swap完成交換
過載》<:
string s1("123");
string s2("03");
int ret = s1 > s2; //這裡》是按位按ascii碼表比大小,所以s2>s1,返回true
string支援運算子》和<<,但是cin遇到空格就停止讀取了
getline函式:
string s;
//cin >> s; //遇到空格就停止讀取,所以不建議使用
getline(cin, s); //一般用getline讀取
//從標準輸入裡讀取字元,存到字串s裡,預設遇到換行符停止讀取。
cout << s;
getline(cin, s, ','); //讀取遇到逗號停止讀取
C string類常用介面
string類的常用介面 1 string類物件的常見構造 include include using namespace std intmain 2 string類物件的容量操作 include include using namespace std size length capacity cl...
C String類介面的實現
對c string庫部分介面的實現,通過介面間的復用,使個個介面緊密聯絡,更加簡潔。重要介面expand 通過檢測當前物件容量是否滿足要求,對物件進行擴容等操作。此次實現string全部使用的是深拷貝。include include include includeusing namespace st...
C string類常用函式
string類的建構函式 string const char s 用c字串s初始化 string int n,char c 用n個字元c初始化 此外,string類還支援預設建構函式和複製建構函式,如string s1 string s2 hello 都是正確的寫法。當構造的string太長而無法表...