C での数値入力の検証
整数入力を処理するプログラムでは、ユーザーが有効な数値を指定することが重要です。残念ながら、atoi() 関数は複数桁の整数を扱う場合には不十分です。この記事では、数値入力を検証するための代替方法について説明します。
フェイルビットの使用
C の入力ストリーム (cin) は、解析できない入力に遭遇したときにフェイルビットを設定します。これは、次のように入力を検証するために利用できます。
int n; cin >> n; if(!cin) { // User did not input a number cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
入力オーバーフローの処理
整数が最大許容値を超えると、cin はフェイルビットも設定します。これを防ぐには、入力を読み取る前にストリームの状態をチェックします。
while(!cin.eof()) { int n; cin >> n; if(!cin) { // Input error occurred cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } else { // Valid input process(n); } }
このループは、ファイルの終わり (EOF) に達するまで入力の読み取りと検証を続けます。
その他代替案
以上が`atoi()` を超えて C の数値入力を検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。