iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0

接著我們要說說 C String!C string 是字元陣列,通常會使用 pointer 來做應用。還有另一種字串:C++ string,則是一種物件(object),不過由於這門課還是一門基礎課,這邊就先不介紹 C++ string。

char

當我們要宣告字串的時候,就須要宣告他的變數類型為char的陣列,而其值我們在VS code中必須以雙引號 框起來。而引號內的值會以 ASCII code 記。

例如:

char c = ‘0’;

這時候如果我們輸出其結果,會輸出 0 的 ASCII code,也就是’48’。
反之,

char c = 48;

輸出則會得到數字0

我們可以拿字元陣列與一般的陣列來做比較:

int values[5] = {0};
cout << values;

結果並不意外,會出現一組 address,也就是values的 address。

char str[10] = “abcde”;
cin >> str;
cout << str;

Char str[10] 意思是這個str字串輸出結果為 abcde

另外,要特別注意的是,我們可以寫

int b;
b = 0;

但是我們不能以同樣的邏輯初始化字元陣列,像是

char s[100];
s = “this is a string”;

Null Character

Null character 我們記為\0,電腦會自己存,代表一個字串的結束。

也就是說,以以下例子來看:
不過並不是每一種情形 null character 都會被加入,
初始化的時候:

char s[10] = "abc";    // null character
char s[100] = {'a', 'b', 'c'};    // no \0

input 也有兩種情況:

cin >> s;    // null character
cin >> s[0];    // no \0

cin.getline ( )

再來,我們可能會遇到一個問題:

char a1[100] = {0};
cin >> a1;	// “this is a string”
cout << a1;	// “this”

明明我們就是輸入一個句子ㄟ!為什麼輸出卻只能輸出一個詞!
原來cin會根據空白鍵來切割輸入的字串,這時候我們的解決辦法就是使用cin.getline()
cin.getline( )的用法就是括號中前面放字串名稱,後面放字串長度,中間以逗號隔開。

char a[100];
cin.getline(a, 100);
cout << a;

如此一來,就能輸出任何我們想要的東西!

Function

最後最後,來介紹一些跟字串有關的函數:
strlen
用來計算字串長度。
toupper
把所有字元都換成大寫。
tolower
把所有字元都換成小寫。
strstr
strstr(first, second)就是找second有沒有在first中出現,在找關鍵字時很實用。

那 C string 的部分就告一段落啦!


上一篇
【Day 24】Pointer - Practice 1
下一篇
【Day 26】C String - Practice 1
系列文
C++ 三十天學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言