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