char,字元
很多字元組合在一起
成為字元陣列
也就是字串
那字元陣列有甚麼特性?
宣告:
跟一般陣列相同
宣告都是同樣格式
(一般陣列) 型態 陣列名稱 [元素數目];
(字元陣列) char 名稱[元素數目(包括‘�’)];
Ex:
#include <iostream> using namespace std; int main(){ int str[10]; //一般陣列 char name[10]; //字元陣列 //可以放入9個字元(扣掉'\0') }<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>
初始化:
不同於一般陣列
字元陣列可以直接輸入字串作為初始化
(一般陣列) 型態 陣列名稱 [元素數目]={元素1, 元素2, ………};
(字元陣列) char 名稱[元素數目(包括‘�’)]=”字串內容“;
Ex:
#include <iostream> using namespace std; int main(){ int str[5]={1,2,3,4,5}; //一般陣列 char name[10]="Tony0612"; //字元陣列 }<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>
C++11新增內容:
char 名稱[元素數目(包括’�’)]=”字串內容”;
- 可以對C-風格的字串進行列表初始化
- 可以省略”=”
(O) char a={“Apple”};
(O) char b {“Bird}
- 可使用空白括弧,將所有元素設為空格
Ex:
#include <iostream> using namespace std; int main(){ char name1[10]={"Tony0612"}; //列表初始化 char name2[10] {"Janet"}; //可以省略"=" char name3[10]={}; //使用空白括弧,將所有元素設為空格 cout << name1 << endl; cout << name2 << endl; cout << name3 << endl; }
函數 必須引入 <cstring> 標頭檔
- 取得字串長度
strlen(陣列位址);
PS: 陣列位址=陣列名稱
- 拷貝字串
strcpy(目的陣列位址(陣列名稱),拷貝陣列位址(陣列名稱));
PS: 陣列位址=陣列名稱
- 連接字串
strcat(陣列位址1(陣列名稱1),陣列位址2(陣列名稱2));
PS: 陣列位址=陣列名稱
Ex:
#include <iostream> #include <cstring> //引入 <cstring> 標頭檔 using namespace std; int main(){ char name1[10]={"Tony0612"}; char name2[10]={}; cout << strlen(name1) << endl; //印出字串長度 strcpy(name2,name1); //將name1的內容拷貝到nmae2字串 strcat(name1,name2); //連接name1以及name2字串並指定給name1 cout << name1 << endl; //印出name1字串 cout << name2; //印出name2字串 }
- 比較字串
strcmp(陣列位址1,陣列位址2);
PS: 陣列位址=陣列名稱
Ex:
#include <iostream> #include <cstring> using namespace std; int main(){ char a[10]="Hello"; char b[10]="Bye"; char c[10]; strcpy(c,a); //將a的內容拷貝到b cout << strcmp(a,b) << endl; //比較a,b內容 cout << strcmp(a,c) <<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>< endl; //比較a,c內容 }