競技プログラミング用 知識集積所

char型

最終更新:

sport_programming

- view
管理者のみ編集可


雑な説明

文字型変数。

レベル

ABCのA問題レベル。

詳細な説明

文字型。
文字1文字を入れる変数であり、2文字以上入れたい場合はstring型(未作成)を参照。
シングルクオーテーション' 'を使うことでchar型として扱われる。

実際の中身は各文字に対応する8ビット整数が入っており、例えば'0'は48、'A'は65、'a'は97、など。
特に'0'という文字の番号が0番じゃないことに注意。
実際の番号を覚える必要はほぼなく、'0'から'9'まで連番、いくつか後に'A'から'Z'まで連番、いくつか後に'a'から'z'まで連番、くらいの認識で問題ない。

宣言と初期化

宣言だけする場合
char c;
初期化もする場合
char c = 'A';  //固定値で初期化
char d = c;    //他の変数(整数型、char型)で初期化
整数型で初期化した場合、そのASCIIコードの文字になる。

可能な演算

代入 =

a=b; で、変数aの中身をbという値に書き換える。
数学とは違い、左右を逆にして b=a; と書くと意味が変わるので注意。
整数型を代入した場合、そのASCIIコードの文字になる。

加算 +

a+bで、aとbの和を計算する。
char型同士の足し算も、char型にint型を足すこともできる。

減算 -

a-bで、aとbの差を計算する。
char型同士の引き算も、char型からint型を引くこともできる。

各種複合代入演算子

複合代入演算子(未作成)を参照。
char型の場合、+=、-=、および、++、--、が使える。

よく使う処理

int型化(B問題レベル)

ASCIIコード上で'0'から'9'までが連続で並んでいることを利用できる。
char型の数字1文字cを実際の数にしたい場合、
c-'0'
とする。
逆に、0以上9以下のint整数aからその数字のchar型データを得たい場合、
a+'0'
の結果をchar型変数に入れる。

文字種判定

isupper(c)で大文字かどうか判定、islower(c)で小文字かどうか判定、isdigit(c)で数字かどうか判定。
あるいは自分で手書きして、'A'<=c&&c<='Z'などとしてもよい。

大文字小文字変換

大文字から小文字への変換
c += 'a'-'A';
小文字から大文字への変換
c += 'A'-'a';

次の文字、前の文字

中身はASCIIコードの番号が入っている。
ということは、c++でその数字を1増やせば次の文字になるし、c--でその数字を1減らせば前の文字になる。
for (char c='a'; c<='z'; c++)
と書けば、全ての英小文字についてループできる。

string型(未作成)範囲for文(未作成)(B問題レベル)

string型(未作成)の全ての文字について何か判定したい場合
for (char c : s)
で範囲forループを書ける。
auto型(未作成)を使ってもよいが。

注意点


関連アルゴリズム

ウィキ募集バナー