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 下面...