C++字符


字符

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的大寫形式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM