C++與演算法

字元(char)

3.3.1變數型態 裡,提過

型態 中文意思 英文字義 可儲存的資料
char 字元(半形字) Character 'a''R''1''@''*' ...

以下會較詳細介紹C++是如何以 char 儲存字元。



ASCII

維基百科 - ASCII

一個 char變數 就是儲存 ASCII 裡的一個整數編號( 0 ~ 127 )

其中分成 (1)可顯示 (2)不可顯示 兩類


(1)半形字(可顯示)

編號32~126 一個整數編號 會對應到 一個半形字,例如

整數編號 半形字
35 '#'
49 '1'
65 'A'
  • 當C++把這些整數解讀成 char 輸出,畫面上就會顯示該 半形字


(2)控制字元(不可顯示)

編號0~31、127 一個整數編號 會對應到 一個控制字元,例如

整數編號 控制字元 意義
0 '\0' 空字元(NULL)
9 '\t' 定位字元(TAB)
10 '\n' 換行字元(ENTER)
  • 當C++把這些整數解讀成 char 輸出,就會執行該 控制字元 的功能

  • 控制字元前面有個\的理由會在下一節 跳脫字元 中說明



語法1 - 整數 轉成 字元

  • 轉換後的值,可以 直接輸出用變數存起來
(char)整數


範例1 - ASCII表輸出器

  • 整數32~126 解讀成 char 輸出
#include<iostream>
using namespace std;

int main()
{
    int i;

    for( i=32 ; i<=126 ; i++ )
    {
        cout << i << " " << (char)i << endl;
    }

    return 0;
}

[output]

32
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (

...(省略)



同樣的,你也可以把字元轉成整數

語法2 - 字元 轉成 整數

  • 轉換後的值,可以 直接輸出用變數存起來
(int)字元


範例2 - 輸出字元的ASCII編號

#include<iostream>
using namespace std;

int main()
{
    cout << (int)'0' << endl;
    cout << (int)'A' << endl;
    cout << (int)'a' << endl;

    cout << endl;

    cout << (int)'\0' << endl;
    cout << (int)'\t' << endl;
    cout << (int)'\n' << endl;

    return 0;
}

[output]

48
65
97

0
9
10


範例3 - 利用 關係運算 判斷字元內容

#include<iostream>
using namespace std;

int main()
{
    char c;

    while( cin >> c )
    {
        if( 'a' <= c and c <= 'z' )
        {
            cout << "是小寫字母" << endl;
        }
        if( 'A' <= c and c <= 'Z' )
        {
            cout << "是大寫字母" << endl;
        }
        if( '0' <= c and c <= '9' )
        {
            cout << "是數字" << endl;
        }
    }

    return 0;
}

[input]

w
S
7

[output]

是小寫字母
是大寫字母
是數字



想想看

  • 如何利用 加減乘除 轉換大小寫?



題目練習

  • todo