[陣列] Char 字元陣列

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內容 
 
}

有疑問? 留個言吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料