《C primer 讀書筆記》 字串

2021-09-12 23:11:24 字數 1611 閱讀 5634

c++提供了兩種字串的表示:c 風格的字串和標準 c++引入的 string 類型別 。

1.c 風格的字串--字串被儲存在乙個字元陣列中,一般通過乙個char*型別的指標來操縱它 

必須包含相關的 c 標頭檔案  

#include
提供一系列函式,如:

// 返回字串的長度

int strlen( const char* );

// 比較兩個字串是否相等

int strcmp( const char*, const char* );

// 把第二個字串拷貝到第乙個字串中

char* strcpy(char*, const char* );

指向 c 風格字串的字元指標總是指向乙個相關聯的字元陣列 

//系統在內部把字串常量儲存在乙個字串陣列中,然後 st 指向該陣列的第乙個元素 

char *st = "the expense of spirit\n";

//可以用指標的算術運算來遍歷 c 風格的字串

while ( *st++ )

c 風格字串的長度可以為 0(因而被視為空串 )

// pc1 不指向任何乙個陣列物件

char *pc1 = 0;

// pc2 指向空字元

const char *pc2 = "";

//故判斷 c 風格字串 通過下面兩步條件測試來完成

char *str = 0;

// ...

if ( ! str || ! *str )

return;

缺點:因為字元指標的底層特性 用它表示字串很容易出錯 

2. string 類

要使用 string 型別 必須先包含相關的標頭檔案

#include string st( "the expense of spirit\n" );
庫函式:

//字串的長度  size()函式  不包含終止空字元

int len=st.size();

//判斷是否為空字串

if(!st.size())

//ok:空

if(st.empty())

//ok:空

3.兩者之間的轉換:

string 型別能夠自動將 c 風格的字串轉換成 string 物件 。但是 ,反向的轉換不能自動執行

string s1;

const char *pc = "a character array";

s1 = pc; // ok

char *str = s1; // 編譯時刻型別錯誤

為實現這種轉換 必須顯式地呼叫名為 c_str()的操作

char *str = s1.c_str(); //錯,c_str()返回了乙個指向常量陣列的指標 

const char *str = s1.c_str(); // ok

C 讀書筆記 字串

c 提供了以下兩種型別的字串表示形式 c 風格字串 c 引入的 string 類型別 c 風格字串 c 風格的字串起源於 c 語言,並在 c 中繼續得到支援。字串實際上是使用 null 字元 0 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。下面的宣告和初始化建立了乙...

C primer 讀書筆記

第2 章 變數和基本型別 1 變數直接初始化和變數 複製初始化 int ival 1024 direct initialization int ival 1024 copy initialization 初始化不是賦值 2 內建型別復 制初始化和直接初始化幾乎沒有區別 但 對類型別物件來 說,有些初...

C Primer讀書筆記

前些日子開始看 c primer 順便做一些筆記,既有書上的,也有自己理解的。因為剛學c 不久,筆下難免有謬誤之處,行文更是凌亂 所幸不是用來顯配的東西,發在linuxsir只是為了方便自己閱讀記憶,以防只顧上網忘了正事。書看了不到一半,所以大約才寫了一半,慢慢補充。const要注意的問題 1 下面...