《c 標準程式庫》讀後感之string 二

2021-07-01 23:07:26 字數 1126 閱讀 9022

一 、string class的定義

標頭檔案 #include

在之中,basic_string<.>被定義為所有字串型別的基本模板型別(basic template class)

namespace std{

template, class allocator  = allocator>

class basic_string;

在模板中,第乙個引數是單個字元所屬的型別;

第二個引數是個特性型別,提供字串型別中所有的字元核心操作。這種特性型別規定了「複製字元」或「比較字元」的做法,如果沒有指定它,就會根據現有的字元型別採用預設的型別。

第三個引數帶預設值,它定義了字串型別所採用的記憶體模式,allocator(配置器)是c++標準程式庫在許多地方採用特殊物件來處理記憶體配置和定址。

string型別是針對char而預先定義的特化版本

namespace std{

typedef basic_stringstring;

還有針對wchar_t而預先定義的特化版本,這裡就不詳細介紹了。

二、string class 與 cstring

在c++ 標準中,為了提供向下相容,存在乙個從const char* 到string的隱式型別轉換,但是不存在從string object 到 cstring的自動型別轉化,但是提供了幾種方式可以將string型別轉為char*資料。

三個函式:

1、data()以字元陣列的形式返回字串內容。由於並沒有追加『\0』字元,所以返回型別並非有效的cstring。

2、c_str()  以cstring形式返回字串內容,也就是在尾端新增'\0'字元。

3、copy()將字串內容複製到「呼叫者提供的字元陣列」中。不新增『\0』字元。

三、string 與 vector

string和vector很相似的,他們都可以看成一種動態陣列。可以把string視為一種「以字元作為元素」的特定vectors。但是由於string和vector之間有許多本質上的不同。

一、vector首要目標是處理和操作容器內的元素,而非容器的整體,因此通常會為「容器內的元素的操作行為」經行優化。

二、string主要把整個容器視為整體,經行處理和操作,因此通常會為「整個容器的複製和傳遞」進行優化。

《C 標準程式庫》讀後感

讀書筆記 關於stl的六大元件 這本書基本都詳細的講解了。這本書給我感覺就是既適合初期入門,又適合當字典用,因為裡面的內容比較多,好多第一次記不住。所以也可以大致看一遍,以後用時再具體記,這樣根據實際去學習我個人覺得效果會更好。接下來,我也可以安心學習qt和演算法了,已經有好多天沒做題了,等2.10...

《c 標準程式庫》讀後感之string 一

首先要清楚乙個概念 什麼是string型別 在c語言中,字串是以 0 為結尾的字元陣列串。但在c 中的string並不是c語言中的字串,它可以是型別為char 或const char 的字元陣列 稱為cstring 也可能是class string的乙個實體,泛指代表字串的某個物件。說明 下面將介紹...

《C標準庫》讀後感

c標準庫 讀後感 曾經有份真摯的感情放在我的面前,我沒好好珍惜,等到失去後才追悔莫及,如果上天再給我一次機會,我會她說三個字,我愛你,如果非要在這三個字後面加個期限,我希望是一萬年。這本書,原來在京東上是有賣的。當時以為,我不會對c感興趣,因為c太費事了,遠不如perl之類語言。於是沒有賣。可惜現在...