C++ を使用した While ループでの文字入力
この簡単なガイドでは、C++ での入力の処理について説明します。 さらに、ユーザーによる無効な入力への取り組みの問題を検討します。 最後に、while
ループを使用してユーザーから入力を取得する方法について説明します。
まず、C++ でユーザーから入力データを取得する手順を知っておく必要があります。 C++ の iostream
ライブラリは、関数 cin
を提供します。 ユーザーからの入力を受け取り、使用される変数に値を格納します。
コード例:
int x;
cin >> x;
このコードでは、x
は 1 行目で宣言された integer
変数であり、入力は 2 行目で取得されます。cin
は、ユーザーにデータを入力し、そのデータを変数 x
に保存するように促します。 この値は integer
値でなければなりません。 それ以外の場合、値は x
に部分的に保存されるか、保存されません。
C++ の cin
関数で while
ループを使用する
ユーザーが無効なデータを入力するまで複数の入力を取得する別の例を考えてみましょう。 無効なデータが入力された場合は、入力を閉じる必要があります。
コード:
int main() {
int a;
;
while (cin >> a) {
cout << "You entered the correct input value" << endl;
}
cout << "Sorry, you have entered wrong type of data." << endl;
}
出力:
ユーザーは値を入力するように求められ、値 2
を入力しました。これは int
値です。 そのため、ループが繰り返され、再びユーザーにプロンプトが表示されます。
3 回試行した後、int
型ではないいくつかの文字 (つまり、abc
) を入力しました。 これにより、標準入力ストリーム (cin
に関連付けられている) が破棄され、式 cin >> a
は false
を返します。
したがって、ループが中断され、ループの外の行に制御が移ります。 この方法で無効なデータが入力されるのを制限できます。
次の例では、同じタスクを達成する別の方法を示します。
コード:
int main() {
int a;
;
while (cin) {
cin >> a;
cout << "You entered the correct input value" << endl;
}
cout << "Sorry, you have entered a wrong type of data." << endl;
}
cin
には、good
、bad
、fail
、EOF
の 4つの状態があることを知っておく必要があります。 上記のコードを実行すると、cin
は good
状態になります。
cin
をループ条件として使用しました。 コードが実行を開始すると、cin
は 良い
状態になり、true
を返します。
したがって、while
ループが実行され、ユーザーは a
の値を入力するように求められます。
出力:
間違ったデータが入力されるとすぐに、ループはすぐには中断されませんが、1 回の反復後に中断されます。
cin
に関連付けられた標準入力ストリームが エラー状態
になると、状態が 正常な状態
にリセットされない限り、それ以上の入力を受け取ることはできません。 cin.clear()
関数を使用して cin
の無効な状態をクリアでき、cin.ignore(numeric_limits<streamsize>::max(), '\n')
関数を使用してクリアできます ストリームからの無効な入力。
これにより、実行を中断することなく、ユーザーからの入力を再取得できます。
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn