字符
C++不但可以處理數字類型的值,也可以處理字符。字符數據類型(char)代表一個單獨的字符。一個字符被單引號括起來,如:
char lettter = 'A';
char number = '0';
要注意這里的0不再是數字類型(int,double,float,long),而是字符(char)類型。
這里還有一點要注意,之后講到的字符串類型(string)使用""括起來的,所以"A"是字符串類型而不是字符類型。
ASCII碼
眾所周知,計算機只能識別0和1,那么計算機是如何識別字母,漢字或者其他語言呢。這里涉及到編碼,即把一個字符映射為二進制數。而ASCII是比較原始的一種編碼方式。常用的有數字('0'~'9',對應ASCII值48~57),大寫字母('A'~'Z',對應ASCII值65~90),小寫字母(''a~'z',對應ASCII值97~122)。詳細的ASCII可以上網搜搜看,這里就不過多贅述了。
因為ASCII碼只涉及到英文字母和一些英文符號,不能滿足其他國家的需求,所以后來又出現了很多編碼方式,如GBK,Unicode(萬國碼)等,其中又分為UTF-8, UTF-16等,漢字在UTF-8中常占3個字節,也有4個字節的。當然,這里主要介紹ASCII,額外的就不過多介紹了。
如何從鍵盤讀入一個字符呢?見下面的代碼:
cout << "Enter a character: " << endl; char ch; cin >> ch; cout << "The character you entered is " << ch << endl;
轉義序列
看下面一句代碼
cout << "He said "I like C++"" << endl;
我們的本意是輸出:He said "I like C++" ,但是程序以為我們的字符串只有: "He said " ,所以會報一個編譯錯誤。想想也是理所應當的,否則的話就會有二義性了。
C++為了解決這一問題,使用了一種特殊符號——轉義字符,來表示一下特殊符號。轉義序列都是以一個反斜線打頭,后面跟着一個字符。轉義序列被看做一個整體,不可分割。詳見下表:
轉義序列 | 名稱 | ASCII碼 |
\b | 回退符 | 8 |
\t | 制表符 | 9 |
\n | 換行符 | 10 |
\f | 換頁符 | 12 |
\r | 回車符 | 13 |
\\ | 反斜線 | 92 |
\" | 雙引號 | 34 |
所以,之前的語句可以表示為:
cout << "He sai \"I like C++\"" << endl;
數值與字符的轉換:
//1. 隱式類型轉換 int i = 'A'; cout << "i is " << i <<endl; //顯示結果:65 //因為A的ASCII碼為65 char c = 65; cout << "c is " << c << endl; //顯示結果:A //因為ASCII碼為65所對應的字符為A //2. 顯式類型轉換 int j = 'A' + 2; //j的值為67 cout << j << " is the ASCII code for character " << static_cast<char>(j) << endl; //顯示 結果:67 is the ASCII code for character C //static_cast<char>(value)的<>中的是要轉換為的類型
字符之間的比較(實際上比較的是他們的ASCII碼)
'a' < 'b' 返回true,因為a的ASCII碼是97,b的ASCII碼是98
'a' < 'A' 返回false,因為a的ASCII碼是97,A的ASCII碼是65
字符函數
函數 | 描述 |
isdigit(ch) | 如果ch是數字,返回true |
isalpha(ch) | 如果ch是字母,返回true |
isalnum(ch) | 如果ch是數字或字母,返回true |
islower(ch) | 如果ch是小寫字母,返回true |
isupper(ch) | 如果ch是大寫字母,返回true |
isspace(ch) | 如果ch是空白字符,返回true |
tolower(ch) | 返回ch的小寫形式 |
toupper(ch) | 返回ch的大寫形式 |