char,字元
很多字元組合在一起
成為字元陣列
也就是字串
那字元陣列有甚麼特性?
宣告:
跟一般陣列相同
宣告都是同樣格式
(一般陣列) 型態 陣列名稱 [元素數目];
(字元陣列) char 名稱[元素數目(包括‘�’)];
Ex:
[code language=”cpp”]
#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>
[/code]
初始化:
不同於一般陣列
字元陣列可以直接輸入字串作為初始化
(一般陣列) 型態 陣列名稱 [元素數目]={元素1, 元素2, ………};
(字元陣列) char 名稱[元素數目(包括‘�’)]=”字串內容“;
Ex:
[code language=”cpp”]
#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>
[/code]
- 可以對C-風格的字串進行列表初始化
- 可以省略”=”
(O) char a={“Apple”};
(O) char b {“Bird}
- 可使用空白括弧,將所有元素設為空格
[code language=”cpp”]
#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;
}
[/code]
- 取得字串長度
strlen(陣列位址);
PS: 陣列位址=陣列名稱
- 拷貝字串
- 連接字串
[code language=”cpp”]
#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字串
}
[/code]
- 比較字串
strcmp(陣列位址1,陣列位址2);
[code language=”cpp”]
#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內容
}
[/code]