混合使用標準庫類 string 和 C 風格字串

2022-02-08 06:28:25 字數 996 閱讀 9781

許多 c++ 程式在有標準類之前就已經存在了,因此既沒有使用標準庫型別 string 也沒有使用 vector。而且,許多 c++ 程式為了相容現存的 c 程式,也不能使用 c++ 標準庫。因此,現代的 c++ 程式經常必須相容使用陣列和/或 c 風格字串的**,標準庫提供了相容處理。

毫無疑問,當然可以用字串字面值來初始化 string 類物件:

string st3("hello world");  // st3 holds hello world

通常,由於 c 風格字串與字串字面值具有相同的資料型別,而且都是以空字元 null 結束,因此可以把 c 風格字串用在任何可以使用字串字面值的地方

1) 可以使用 c 風格字串對 string 物件進行初始化或賦值。

2) string 型別的加法操作需要兩個運算元,可以使用 c 風格字串作為其中的乙個運算元(或者用作復合賦值操作的右運算元)。

反之則不成立:在要求c風格字串的地方不可直接使用標準庫 string 型別物件。例如,無法使用 string 物件初始化字元指標:

char *str = st2;  //

compile-time type error

但是,string 類提供了乙個名為 c_str 的成員函式,以實現我們的要求:

char *str = st2.c_str();  //

almost ok, but not quite

c_str 函式返回 c 風格字串,其字面意思是:「返回 c 風格字串的表示方法」,即返回指向字元陣列首位址的指標,該陣列存放了與 string 物件相同的內容,並且以結束符 null 結束。

如果 c_str 返回的指標指向 const char 型別的陣列,則上述初始化失敗,這樣做是為了避免修改該陣列。因此,正確的初始化應為:

constchar *str = st2.c_str(); // ok

C 標準庫 (string 類)

一 成員函式 二 非成員有關的全域性函式 三 例項 感謝閱讀!其中的string是以char作為模板引數的模板類例項,把字串的記憶體管理責任由string負責而不是由程式設計者負責,大大減輕了c語言風格的字串的麻煩 std basic string提供了大量的字串操作函式,如比較 連線 搜尋 替換 ...

C 基礎 string類和標準模板庫

智慧型指標模板類 標準模板庫 泛型程式設計 函式物件 演算法其他庫 內容包括 標準c string類 模板auto ptr unique ptr和shared ptr 標準模板庫 stl 容器類 迭代器 函式物件 stl演算法 模板initializer list string類的建構函式 建構函式...

第16章 string類和標準模板庫

智慧型指標 在物件被銷毀的時候,new的記憶體也被銷毀。不再用delete進行釋放。include include include 必須包含的標頭檔案 using namespace std class report report void comment return 0 stl之vector 1...