std::endl;}}商と余りを表示するプログラムです。入力が間違った場合、無限にループしてしまいました。これを改善したのがこのプログラムです。間違った入力があったときの内容を詳しく見ていきましょう。入力が「ab0」であったとします。この入力はいったん貯蔵庫に納められます。この貯蔵庫をバッファといいます。その貯蔵庫に文字を取りに行くのだと思えばよいです。整数に変換しようとします。この処理は失敗し、”a”を貯蔵庫に返却します。繰り返しても同じことの繰り返しになってしまい、無限ループになってしまいました。従って、プログラムではこの入力を捨てることが必要になってきます。同時に、このエラーの状態がcin変数自体に記憶されていますので、このエラーという記憶も元に戻さないといけません。エラーの記憶をcin変数から消去する処理がstd::cin.clear()で、バッファに入っているものを消去する処理がstd::cin.ignore()になります。ところが、これでもまだ問題があります。std::cin.ignore()はデフォルト(規定値)では1つずつしか消去しないという性質なので、もし間違っていたものが1文字だけならうまく動作しますが、間違って入力したものが複数の文字列なら問題が生じてしまいます。入力された文字の数の分だけループがまわってしまうのです。この問題を解消するには、std::cin.ignore()に全部の入力を改行まで含めて消去せよと指示しなければならないのですが、この問題は後々説明することにします。プログラムの内容を順番に見ていきましょう。=」と画面に表示されます。最初に読み込まれ、入力待ちになります。読み込まれ、入力が間違っていたらループに入ります。std::cin.ignore()で入力消去、エラー消去が行われます。「入力が間違ってます。読み込まれ再び入力待ちになり、正しい入力があるまで繰り返されます。割り切れていれば、「割り切れました。」と表示され、答えも表示されます。余りがある場合は、商と余りを表示します。サンプルプログラムをビルドしてデバッグしてみましょう。コマンドプロンプト上でキーボードから入力します。bを計算し、もし割り切れていれば、「割り切れました。」と表示され、答えも表示されます。余りがある場合は、商と余りを表示します。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。