字元字串
之前提到了字元宣告,但未提及如何利用,現在我們試試這個程式碼:
1
2
3
4
5
6
| #include<bits/stdc++.h>
using namespace std;
int main(){
int a='a',b='z';
for(int i=a;i<=b;i++) cout << i << endl;
}
|
你會發現它輸出了97~122,注意我使用了整數型態,卻用字元初始化,
沒錯,經過型態轉換,‘a’會變成97,‘z’會變成122,其實這就是ascii碼,因此我們其實可以用字元做計算,
現在可以試試看如果改成’A’~‘Z’會對應到哪些ascii碼呢。
字元的宣告要用char,而字串就是字元型態的陣列啦~
,不過這次我們使用在C++比較常用的string
(字串)來講解,
如果不使用萬能函式庫,必須include <string>。
string可以這樣宣告
1
2
3
4
| string s1; //空字串
string s2("abcde"); //用字面常量宣告初始化
string s3(s2); // 複製s2
string s4 = "edasd"; // 用字面常量宣告初始化
|
string可以用size()或length()直接查看字數(字串長度),用empty()確認是否是空字串,甚至可以直接用==比較字串內容是否相同,
1
2
3
4
5
6
7
8
9
10
| string s1 = "abcde";
string s2;
cout << s1 << endl;
cout << "字串1長度="<<s1.size() << endl;
if(s2.empty()) cout << "字串2是空的" << endl;
else cout << "字串2不是空的" << endl;
s1 = s2;
cout << s2 << endl;
|
因為字串即字元陣列,我們也可以直接使用[ ]存取每個值。
如果要循序走訪,我們可以
1
2
3
| for(auto i:S){
cout << i << endl;
}
|
至於原理會在指標中提到。