用乙個字元陣列可以存放乙個字串中的字元。如
char str[12]=;
為了測定字串的實際長度,c++規定了乙個「字串結束標誌」,以字元′\0′代表。在上面的陣列中,第11個字元為′\0′,就表明字串的有效字元為其前面的10個字元。也就是說,遇到字元′\0′就表示字串到此結束,由它前面的字元組成字串。
對乙個字串常量,系統會自動在所有字元的後面加乙個′\0′作為結束符。
在程式中往往依靠檢測′\0′的位置來判定字串是否結束,而不是根據陣列的長度來決定字串長度。當然,在定義字元陣列時應估計實際字串長度,保證陣列長度始終大於字串實際長度。如果在乙個字元陣列中先後存放多個不同長度的字串,則應使陣列長度大於最長的字串的長度。
說明: ′\0′只是乙個供辨別的標誌。
如果用以下語句輸出乙個字串:
cout<
how do you do?″;
系統在執行此語句時逐個地輸出字元,那麼它怎麼判斷應該輸出到哪個字元就停止了呢?
下面再對字元陣列初始化補充一種方法: 用字串常量來初始化字元陣列。例如
也可以省略花括號,直接寫成
不是用單個字元作為初值,而是用乙個字串(注意字串的兩端是用雙撇號而不是單撇號括起來的)作為初值。顯然,這種方法直觀,方便,符合人們的習慣。注意: 陣列str的長度不是10,而是11(因為字串常量的最後由系統加上乙個′\0′)。因此,上面的初始化與下面的初始化等價:
char str=;
而不與下面的等價:
char str=;
前者的長度為11,後者的長度為10。如果有
char str[10]=″china″;
陣列str的前5個元素為′c′,′h′,′i′,′n′,′a′,第6個元素為′\0′,後4個元素為空字元。見圖5.8。
圖5.8
需要說明的是:字元陣列並不要求它的最後乙個字元為′\0′,甚至可以不包含′\0′。
如以下這樣寫完全是合法的:
char str[5]=;
是否需要加′\0′,完全根據需要決定。但是由於c++編譯系統對字串常量自動加乙個′\0′。因此,人們為了使處理方法一致,便於測定字串的實際長度,以及在程式中作相應的處理,在字元陣列中有效字元的後面也人為地加上乙個′\0′。如
char str [6]=;
字串結束標誌 字串 替換空格
遇到對字串或者陣列做填充或刪除的操作時,都要想想從後向前操作怎麼樣。請實現乙個函式,把字串 s 中的每個空格替換成 20 如果想把這道題目做到極致,就不要只用額外的輔助空間了!首先擴充陣列到每個空格替換成 20 之後的大小。然後從後向前替換空格,也就是雙指標法,過程如下 i指向新長度的末尾,j指向舊...
C字串和C 字串
在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。c字串實際上就是乙個以null 0 字元結尾的字元陣列,null字元表示字串的結束。需要注意的是 只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。c字串定義時可以利用 號進行初始化,但是以後不能利用 對c字串進行賦值。...
C字串和C 字串
from 在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。c字串實際上就是乙個以null 0 字元結尾的字元陣列,null字元表示字串的結束。需要注意的是 只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。c字串定義時可以利用 號進行初始化,但是以後不能利用 對c字串...