C string類常用介面

2021-10-06 19:05:12 字數 3148 閱讀 5272

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太長而無法表...