競技プログラミング用 知識集積所
char型
最終更新:
sport_programming
-
view
雑な説明
文字型変数。
レベル
ABCのA問題レベル。
詳細な説明
実際の中身は各文字に対応する8ビット整数が入っており、例えば'0'は48、'A'は65、'a'は97、など。
特に'0'という文字の番号が0番じゃないことに注意。
実際の番号を覚える必要はほぼなく、'0'から'9'まで連番、いくつか後に'A'から'Z'まで連番、いくつか後に'a'から'z'まで連番、くらいの認識で問題ない。
特に'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コードの文字になる。
数学とは違い、左右を逆にして b=a; と書くと意味が変わるので注意。
整数型を代入した場合、そのASCIIコードの文字になる。
加算 +
a+bで、aとbの和を計算する。
char型同士の足し算も、char型にint型を足すこともできる。
char型同士の足し算も、char型にint型を足すこともできる。
減算 -
a-bで、aとbの差を計算する。
char型同士の引き算も、char型からint型を引くこともできる。
char型同士の引き算も、char型からint型を引くこともできる。
各種複合代入演算子
複合代入演算子(未作成)を参照。
char型の場合、+=、-=、および、++、--、が使える。
char型の場合、+=、-=、および、++、--、が使える。
よく使う処理
int型化(B問題レベル)
ASCIIコード上で'0'から'9'までが連続で並んでいることを利用できる。
char型の数字1文字cを実際の数にしたい場合、
char型の数字1文字cを実際の数にしたい場合、
c-'0'
とする。
逆に、0以上9以下のint整数aからその数字のchar型データを得たい場合、
逆に、0以上9以下のint整数aからその数字のchar型データを得たい場合、
a+'0'
の結果をchar型変数に入れる。
文字種判定
isupper(c)で大文字かどうか判定、islower(c)で小文字かどうか判定、isdigit(c)で数字かどうか判定。
あるいは自分で手書きして、'A'<=c&&c<='Z'などとしてもよい。
あるいは自分で手書きして、'A'<=c&&c<='Z'などとしてもよい。
大文字小文字変換
大文字から小文字への変換
c += 'a'-'A';
小文字から大文字への変換
c += 'A'-'a';
次の文字、前の文字
中身はASCIIコードの番号が入っている。
ということは、c++でその数字を1増やせば次の文字になるし、c--でその数字を1減らせば前の文字になる。
ということは、c++でその数字を1増やせば次の文字になるし、c--でその数字を1減らせば前の文字になる。
for (char c='a'; c<='z'; c++)
と書けば、全ての英小文字についてループできる。
string型(未作成)の範囲for文(未作成)(B問題レベル)
string型(未作成)の全ての文字について何か判定したい場合
for (char c : s)
で範囲forループを書ける。
auto型(未作成)を使ってもよいが。
auto型(未作成)を使ってもよいが。