C++ char型をマスター:宣言、ASCII、変換テクニック
char型とは
C++のchar型は、単一文字を格納する基本的な整数データ型です。内部的には8ビット整数として表現され、正確に1バイトのメモリを占有します。整数型であるため、他の数値型と同様に算術演算や比較に参加できます。
このチュートリアルで学ぶ内容:
char変数の定義- ASCIIと文字表現での役割の理解
- ASCIIコードと文字値の出力
- ユーザー入力からの文字読み取り
- 文字と文字列の相互変換(複数の方法)
ASCII – 文字エンコーディングの基盤
char値が格納されるとき、C++コンパイラはそれをASCIIコード(American Standard Code for Information Interchange)として解釈します。ASCIIは各印刷可能文字に整数値(0〜127)を割り当てます。例えば、文字'a'は10進数97に対応します。
char変数の宣言
文字変数を宣言するには、charキーワードに続けて名前を指定します。オプションで、シングルクォートで囲まれた単一文字リテラルで初期化できます。
char variableName; // 宣言のみ char variableName = 'X'; // 初期化付き宣言
例1:charの宣言と出力
#include <iostream>
using namespace std;
int main() {
char grade = 'B';
cout << "I scored a: " << grade;
return 0;
}
出力:
文字のASCII値を出力
charは本質的に整数であるため、intにキャストしてASCIIコードを明らかにできます。
例2:ユーザー入力とASCII出力
#include <iostream>
using namespace std;
int main() {
char ch;
cout << "Enter any character: ";
cin >> ch;
cout << "The ASCII Value of " << ch << " is " << int(ch);
return 0;
}
出力:
ASCIIコードから文字を出力
整数リテラルをchar変数に代入すると、コンパイラはその整数をASCIIコードとして解釈し、対応する文字を格納します。
例3:ASCIIからcharへの変換
#include <iostream>
using namespace std;
int main() {
char x = 64, y = 66, z = 71;
cout << x << y << z;
return 0;
}
出力:
ユーザーから文字を読み取り
抽出演算子>>は、入力された最初の非空白文字のみを読み取ります。後続の文字は読み取られるまで入力バッファに残ります。
例4:2文字の読み取り
#include <iostream>
using namespace std;
int main() {
cout << "Type a sequence of characters: ";
char ch;
cin >> ch;
cout << "The ASCII code of " << ch << " is " << int(ch) << '\n';
cin >> ch;
cout << "The ASCII code of " << ch << " is " << int(ch) << '\n';
return 0;
}
出力:
文字を文字列に変換
単一文字をstd::stringに変換するにはいくつかの手法があります。以下に最も一般的なアプローチを示します。
#1 – 文字列コンストラクタを使用
string st(1, 'C');
これは長さ1で文字'C'を含む文字列を作成します。
例5
#include <iostream>
#include <string>
using namespace std;
int main() {
string st(1, 'C');
cout << "The resulting string is : " << st;
return 0;
}
出力:
#2 – オーバーロードされた=と+=演算子を使用
文字を直接文字列に代入または追加するのは簡潔で読みやすいです。
例6
#include <iostream>
#include <string>
using namespace std;
int main() {
string st;
char b = 'B';
st = 'A';
st += b;
cout << "The resulting string is : " << st;
return 0;
}
出力:
#3 – 文字列メンバ関数を使用
push_back(char)– 末尾に文字を追加append(size_t, char)– 文字の複数コピーを追加assign(size_t, char)– 文字の複数コピーで文字列を置換insert(size_t, size_t, char)– 指定位置に文字を挿入
例7
#include <iostream>
#include <string>
using namespace std;
int main() {
string st;
st.push_back('A');
cout << "push_back A returns : " << st << endl;
st = "";
st.append(1, 'C');
cout << "append C returns : " << st << endl;
st = "";
st.assign(1, 'D');
cout << "assign D returns : " << st << endl;
st.insert(0, 1, 'E');
cout << "insert single character returns : " << st << endl;
return 0;
}
出力:
#4 – std::stringstreamを使用
ストリーム演算子はcharに対してオーバーロードされており、文字列への簡単な変換を可能にします。
例8
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string st;
stringstream myst;
myst << 'A';
myst >> st;
cout << "The conversion of the single character returns the string: " << st;
return 0;
}
出力:
重要なポイント
charは単一文字を保持する8ビット整数型- 1バイトを占有し、ASCIIコード(0〜127)として格納される
charをintにキャストしてASCIIコードを取得可能- 文字はコンストラクタ、代入演算子、メンバ関数、ストリングストリームで文字列に変換可能
C言語