C 字串知識點小結

2021-10-02 18:26:48 字數 2413 閱讀 1957

c++ 提供了一下兩種型別的字串表示形式:

c風格字串

c++引入的string 類型別

c 風格的字串起源於 c 語言,並在 c++ 中繼續得到支援。字串實際上是使用 null 字元 『\0』 終止的一維字元陣列。因此,乙個以 null 結尾的字串,包含了組成字串的字元。

下面的宣告和初始化建立了乙個 「hello」 字串。由於在陣列的末尾儲存了空字元,所以字元陣列的大小比單詞 「hello」 的字元數多乙個。

char greeting[6] = ;
等價為:

char greeting = "hello";
字串的記憶體表示:

其實,您不需要把 null 字元放在字串常量的末尾。c++ 編譯器會在初始化陣列時,自動把 『\0』 放在字串的末尾。讓我們嘗試輸出上面的字串:

例如:

#include using namespace std;

int main ();

cout << "greeting message: ";

cout << greeting << endl;

printf("%s",greeting); //輸出同上句一樣

return 0;

}

輸出:greeting message: helloscanf 輸入 printf輸出:

%c 用於單個字元,能識別空格與換行,

%s 用於字元陣列,通過空格,換行來判定字串的結束

#includeint main()

輸入:tat tat tat

輸出:tat

getchar 與 putchar

#include int main()

輸入:a b c

輸出:a b

因為 c2 儲存的是換行符,因此字元 c 沒有存入。

所以應該這樣寫:

#include int main()

輸入:a b c

輸出:a b c

gets 與 puts:

gets 用來輸入一行字串(注意:gets 識別換行符 \n 作為輸入結束,gets可以識別空格並將其儲存到字串中,因此 scanf 完乙個整數後,如果要使用 gets,需要先用 getchar 接收乙個整數後的換行符),並將其存放於陣列中;puts 用來輸出一行字串,並緊跟乙個換行.

#includeint main()

輸入:abcd //以換行區分字元的結束

cdef

efgh

ghijk

輸出:與輸入一樣

當然 c++ 中提供一些函式用於字串的處理

輸出:

strcpy( str3, str1) :  hello

strcat( str1, str2): helloworld

strlen(str1) : 10

用法

#include 

#include

using namespace std;

int main (

)

字串陣列
string name[5]; //定義乙個字串陣列,它包含5個字串元素

string name[5]=;

當然string類也提供了一系列對字串的操作

find() – 在字串中查詢字串

insert() – 插入字元

length() – 返回字串的長度

replace() – 替換字串

substr() – 返回某個子字串

size() – 返回字串的長度

比如:

#include 

#include

using namespace std;

intmain()

C語言字串知識點

在介紹c語言字元和字串之前,許多c語言初學者都很好奇,為什麼字元型別的資料是整型型別?其實字元在記憶體中,是以整數形式 ascii 0 127 存放在記憶體中的。因而字元型別資料屬於整型。字元知識點 定義乙個字元變數 char c a 字元常量要用單引號引用,字串才可以用雙引號 字元這裡就記住要用單...

字串知識點checklist

知識點checklist 1 strlen 函式的返回值是什麼型別的?2 字串strlen 的值,是否和他佔據的記憶體空間相同?3 你是否知道strcpy 函式存在的潛在風險?如何避免?4 如果乙個字串沒有字串結束符,而呼叫str 開頭的庫函式,會發生什麼?5 strcpy strcat strcm...

字串小知識點

1 字串操作 strcpy p,p1 複製字串 strncpy p,p1,n 複製指定長度字串 strcat p,p1 附加字串 strncat p,p1,n 附加指定長度字串 strlen p 取字串長度 strcmp p,p1 比較字串 strcasecmp忽略大小寫比較字串 strncmp p...