1String概念
² string是STL的字串型,通常用來表示字串。而在使用string之前,字串通常是用char*表示的。 string與char*都可以用來表示字串,那麼二者有什麼差別呢。
string和char*的比較
² string是一個類別, char*是一個指向字元的指標。
string封裝了char*,管理這個字串,是一個char*型的容器。
² string不用考慮記憶體釋放和越界。
string管理char*所分配的記憶體。每一次string的複製,取值都由string類別負責維護,不用擔心複製越界、取值越界等。
² string提供了一系列的字串操作函數(這個等下會詳講)
查找find,拷貝copy,刪除erase,取代replace,插入insert
2string的預設建構子函數:
string(); //建構一個空的字串string s1。
² 拷貝建構子:
string(const string &str); //建構一個與str一樣的string。如strings1(s2)。
² 帶參數的建構子
string(const char *s); //用字串s初始化
string(int n,char c); //用n個字元c
3string存取字符操作
² string類別的字符操作:
const char &operator[] (int n) const; const char &at(int n) const; char &operator[] (int n); char &at(int n);
主要區別在於at()在越界時會拋出異常,[]在剛好越界時會返回(char)0,再繼續越界時,編譯器直接出錯。如果你的程式希望可以透過try,catch捕捉異常,建議採用at()。
4從string取得const char*的操作
² const char *c_str() const; //回傳一個以'