c character classification
このチュートリアルでは、C ++の文字と変換関数について例を挙げて説明します。対象となるいくつかの重要な関数は、isdigit、islower、isupper、isalphaなどです。
「ライブラリ関数」に関する以前のチュートリアルでは、さまざまなデータ型で動作する多数の関数を提供するさまざまなヘッダーを見ました。ヘッダーは、個々の文字を分類および操作する一連の関数を含むそのようなヘッダーの1つです。
=> ゼロからC ++を学ぶには、ここにアクセスしてください。
ヘッダーで宣言された関数は、パラメーターとして1文字(intと同等)を取り、ブール値または文字値のいずれかである整数値を返します。値0(ゼロ)はfalseを示し、0(ゼロ以外)以外の値はtrueを示します。
これらの1文字の関数は、ヘッダーを含めることでプログラムで使用できます。これらの関数は広く使用され、受け入れられており、文字のテスト、変換、または操作のためのC ++プログラミングで非常に役立ちます。
このチュートリアルでは、さまざまな文字関数について説明し、これらの各関数をプログラムで使用する方法を確認します。
学習内容:
C ++文字関数
C ++文字関数は、パラメーターとして1文字のみを受け取り(intにキャスト)、結果を返す関数です。これらは、isalpha、isalnum、isdigit、islower、isupperなどの分類関数と、特定の文字をそれぞれ大文字または小文字に変換するtoupperおよびtolowerなどの変換関数です。
ヘッダーには、以下のように定義された2種類の関数があります。
(i)文字分類関数
文字分類関数は、関数の引数として渡された1文字が特定のカテゴリに属しているかどうかを確認するために使用されます。
以下のヘッダーに含まれる文字分類関数を表にまとめました。
しない | 関数名 | 機能目的 |
---|---|---|
7 | islower | 指定された文字が小文字かどうかを確認します |
1 | isalnum | 指定された文字が英数字かどうかを確認します |
二 | isalpha | 文字がアルファベットかどうかを確認します |
3 | 空白です | 文字が空白かどうかを確認します |
4 | iscntrl | 指定された文字が制御文字であるかどうかを確認します |
5 | isdigit | 指定された文字が10進数であるかどうかを確認します |
6 | isgraph | 指定された文字にグラフィック表現があるかどうかを確認します |
8 | 印刷 | 文字が印刷可能な文字であるかどうかを確認します |
9 | ispunct | 文字が句読文字かどうかを確認します |
10 | isspace | 文字が空白かどうかを確認します |
十一 | isupper | 指定された文字が大文字かどうかを確認します |
12 | isxdigit | 文字の16進数かどうかを確認します |
(ii)文字変換関数
文字変換関数はケース間で変換します。以下の関数がファイルに含まれています。
しない | 関数名 | 機能目的 |
---|---|---|
1 | tolower | 大文字を小文字に変換します |
二 | toupper | 小文字を大文字に変換します |
それぞれの文字関数(分類と変換)を詳しく見ていきましょう。また、各関数の簡単なC ++プログラミング例も示します。
Isalnum
関数プロトタイプ: int isalnum(int c);
パラメーター): c =>英数字かどうかを確認する必要のある文字
戻り値:
ゼロ以外=> cは英数字です
0 => cは英数字ではありません
説明: この関数は、指定された文字cが英数字であるかどうかをチェックします。英数字とは、文字がA(a)〜Z(z)または0〜9の間にあることを意味します。
C ++では、この関数はロケール固有であり、その定義はヘッダーにあります。
例:
#include #include using namespace std; int main() { char chary(12) = 'Hello World'; // checking for isalnum() function for (int i=0; i<12; i++) { if (isalnum(chary (i))) cout << chary (i) << ' is alphanumeric' << endl; else cout << chary (i) << ' is not alphanumeric' << endl; } cout << endl; }
出力:
Isalpha
関数プロトタイプ: int isalpha(int c);
パラメーター): c->アルファベットかどうかをチェックする文字。
戻り値:
ゼロ以外=> cはアルファベットです
0 =>アルファベットではない
説明: この関数は、指定された文字cが英字であるかどうか、つまり小文字と大文字の間であるかどうかをチェックします。 isalnumと同様に、この関数も使用しているロケールによって異なります。
例:
#include #include using namespace std; int main() { char ch_alpha(5) = 'sth1'; for (int i=0; i<5; i++) { if (isalpha(ch_alpha(i))) cout << ch_alpha(i) << ' is an alphabet' << endl; else cout << ch_alpha(i) << ' is not an alphabet' << endl; } cout << endl; }
出力:
Isblank
関数プロトタイプ: int isblank(int c);
パラメーター): c =>チェックする文字。
戻り値:
ゼロ以外=>文字が空白
0 =>文字が空白ではありません
説明: この関数は、指定された文字が空白かどうかをチェックします。空白文字は、テキスト行の単語を区切るために使用されるスペース文字です。
C ++では、ロケール固有のバージョンのisblank関数がに存在します。
例:
#include #include using namespace std; int main() { char ch_alpha(6) = 's t h'; for (int i=0; i<6; i++) { if (isblank(ch_alpha(i))) cout << ch_alpha(i) << ' is a blank' << endl; else cout << ch_alpha(i) << ' is not a blank' << endl; } cout << endl; }
出力:
「空白ではありません」という出力の最後の行に注意してください。これは、文字配列の最後の位置が値に初期化されていないが、印刷位置が残っているためです。したがって、それは空白ではありません。
Iscntrl
関数プロトタイプ: int iscntrl(int c);
パラメーター): c =>チェックする文字
戻り値:
ゼロ以外=> cは制御文字です
0 => cは制御文字ではありません
説明: 関数は、指定されたパラメーターが制御文字であるかどうかをチェックします。制御文字は、ディスプレイに表示されない、または印刷位置を占めない文字です。
例:
#include #include using namespace std; int main() { char ch_alpha(6) = 's
t h'; for (int i=0; i<6; i++) { if (iscntrl(ch_alpha(i))) cout << ch_alpha(i) << ' is a control character' << endl; else cout << ch_alpha(i) << ' is not a control character' << endl; } cout << endl; }
出力:
Isdigit
関数プロトタイプ: int isdigit(int c)
パラメーター): c =>値がチェックされるintにキャストされた文字。
戻り値: ゼロ以外=> cは10進数です
0 => cは数字ではありません
説明: この関数は、指定されたパラメーターが10進数であるかどうかをチェックします。値が0から9の間の場合、文字は10進数です。
例:
#include #include using namespace std; int main() { char ch_alpha(5) = 'a12b'; for (int i=0; i<5; i++) { if (isdigit(ch_alpha(i))) cout << ch_alpha(i) << ' is a digit' << endl; else cout << ch_alpha(i) << ' is not a digit' << endl; } cout << endl; }
出力:
Isgraph
関数プロトタイプ: int isgraph(int c)
パラメーター): c => isgraph関数を使用してチェックされる文字キャストint
戻り値:
ゼロ以外=> cはグラフィック表現です
0 => cはグラフィック表現ではありません
説明: 関数は、指定された文字cがグラフィック表現の文字であるかどうかをチェックします。印刷できる文字は、グラフィック表現の文字です。
例:
#include #include using namespace std; int main() { char ch_alpha(6) = 'a~12b'; for (int i=0; i<6; i++) { if (isgraph(ch_alpha(i))) cout << ch_alpha(i) << ' is a graphical character' << endl; else cout << ch_alpha(i) << ' is not a graphical character' << endl; } cout << endl; }
出力:
Islower
関数プロトタイプ: int islower(int c)
パラメーター): c => islower関数を使用してチェックされる文字。
戻り値:
non-zer0 => cは小文字です
0 => cは小文字ではありません
説明: 関数islowerは、指定された文字cが小文字であるかどうかをチェックします。
小文字は、次のいずれかの値を持つ文字です:a b c d e f g h I j k l m n o p q r s t u v w x yz。
例:
#include #include using namespace std; int main() { char ch_alpha(4) = 'Sth'; for (int i=0; i<4; i++) { if (islower(ch_alpha(i))) cout << ch_alpha(i) << ' is a lowercase character' << endl; else cout << ch_alpha(i) << ' is not a lowercase character' << endl; } cout << endl; }
出力:
印刷
関数プロトタイプ: int sprint(int c)
パラメーター): c => isprint関数を使用してチェックする文字。
戻り値:
non-zer0 => cは印刷可能です
0 => cは印刷できません
説明: 関数isprintは、指定された文字が印刷可能かどうかをチェックします。印刷可能な文字は、ディスプレイの印刷位置を占める文字です。
例:
#include #include using namespace std; int main() { char ch_alpha(4) = 'Sth'; for (int i=0; i<4; i++) { if (isprint(ch_alpha(i))) cout << ch_alpha(i) << ' is a printable character' << endl; else cout << ch_alpha(i) << ' is not a printable character' << endl; } cout << endl; }
出力:
Ispunct
関数プロトタイプ: int ispunct(int c)
パラメーター): c => ispunct関数を使用してチェックされる文字。
戻り値:
non-zer0 => cは句読文字です
0 => cは句読文字ではありません
説明: この関数は、指定された文字が句読文字であるかどうかをチェックします。 (isgraphからの)グラフィック文字であり、(isalnumからの)英数字ではない文字は、句読文字と呼ばれます。
例:
#include #include using namespace std; int main() { char ch_alpha(8) = 'sth@123'; for (int i=0; i<8; i++) { if (ispunct(ch_alpha(i))) cout << ch_alpha(i) << ' is a punctuation character' << endl; else cout << ch_alpha(i) << ' is not a punctuation character' << endl; } cout << endl; }
出力:
Isspace
関数プロトタイプ: int isspace(int c)
パラメーター): c => isspace関数を使用してチェックされる文字。
戻り値:
non-zer0 => cは空白です
0 => cは空白ではありません
説明: この関数は、指定された文字が空白であるかどうかをチェックします。 「C」ロケールの場合、空白文字は次のいずれかです。
例:
#include #include using namespace std; int main() { char ch_alpha(7) = 's t
h'; for (int i=0; i<7; i++) { if (isspace(ch_alpha(i))) cout << ch_alpha(i) << ' is a white space' << endl; else cout << ch_alpha(i) << ' is not a white space' << endl; } cout << endl; }
出力:
Isupper
関数プロトタイプ: int isupper(int c)
パラメーター): c => isupper関数を使用してチェックされる文字。
戻り値:
non-zer0 => cは大文字です
0 => cは大文字ではありません
説明: 関数islowerは、指定された文字cが大文字であるかどうかをチェックします。
大文字は、次のいずれかの値を持つ文字です:A B C D E F G H I J K L M N O P Q R S T U V W XYZ。
例:
#include #include using namespace std; int main() { char ch_alpha(4) = 'STh'; for (int i=0; i<4; i++) { if (isupper(ch_alpha(i))) cout << ch_alpha(i) << ' is an uppercase character' << endl; else cout << ch_alpha(i) << ' is not an uppercase character' << endl; } cout << endl; }
出力:
Isxdigit
関数プロトタイプ: int isxdigit(int c)
パラメーター): c => isxdigit関数を使用してチェックされる文字。
戻り値:
non-zer0 => cは16進数です
0 => cは16進数ではありません
説明: この関数は、指定された文字が16進数であるかどうかをチェックします。有効な16進数は01 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
例:
#include #include using namespace std; int main() { char ch_alpha(6) = 'sbc10'; for (int i=0; i<6; i++) { if (isxdigit(ch_alpha(i))) cout << ch_alpha(i) << ' is hexadecimal digit' << endl; else cout << ch_alpha(i) << ' is not hexadecimal digit' << endl; } cout << endl; }
出力:
tolower
関数プロトタイプ: int tolower(int c)
パラメーター): c =>小文字に変換される文字。
戻り値:
それ以外は変更せずに、cに相当する下位値を返します。
戻り値はintであり、暗黙的にcharにキャストできます。
説明: これにより、指定された文字cが同等の小文字に変換されます。特定の文字に対して変換が不可能な場合、変更されていない値(c)が返されます。
例:
#include #include using namespace std; int main() { char ch_alpha(4) = 'STH'; cout< 出力:
STHを小文字に変換:sth
toupper
関数プロトタイプ: int toupper(int c)
パラメーター): c =>大文字に変換される文字
戻り値:
cと同等の上限を返しますが、それ以外は変更しません。
bツリーとb +ツリーの違い
戻り値はintであり、暗黙的にcharにキャストできます。
説明: これにより、指定された文字cが同等の大文字に変換されます。特定の文字に対して変換が不可能な場合、変更されていない値(c)が返されます。
例:
#include #include using namespace std; int main() { char ch_alpha(10) = 'tutorials'; cout< 出力:
小文字に変換されたチュートリアル:チュートリアル
結論
これで、C ++の文字関数に関するチュートリアルは終了です。
このチュートリアルでは、1つの文字を受け取り、それらを分類または変換するさまざまな関数を見てきました。以降のチュートリアルでは、C ++に関連する文字列とその関数およびクラスについて説明します。
=> ここでシンプルなC ++トレーニングシリーズをご覧ください。
推奨読書