-3

キー(アルファベットやその他の文字など)を無効にして、ユーザーがキーを整数に入力してエラーを発生させないようにすることができるかどうか疑問に思っていました。それが不可能な場合 (または推奨される場合)、エラーの処理方法を教えてください。

4

2 に答える 2

1
int x;
std::cout << "Enter a number: ";
std::cin >> x;
while(std::cin.fail())
{
    std::cin.clear();
    std::cin.ignore(numeric_limits<streamsize>::max(),'\n');
    std::cout << "Bad entry.  Enter a NUMBER: ";
    std::cin >> x;
}
std::cout << "x = " << x << "\n";

std::system("pause");
return 0;

これはwhile、ユーザーが有効な整数を入力するまでループにとどまります。ユーザーが入力した数値が特定の範囲内にあることを確認するためにさらにチェックを入れたり、特定の数の推測を許可する変数を追加したりできます。

もちろん、プロンプトなどを編集して、これを使用する目的に合わせて調整する必要がありますが、新しいプロジェクトを作成してこのファイルをロードし、それがどのように機能するかをテストすることができます. これで少し遊んで、基本的なユーザー入力処理を行う方法を理解できました。

さらに、xこのテンプレートを a に変更してもdouble、これは完全に正常に機能します。「キーをオフにする」場合は、-(負号) や.(10 進数) などのキーを許可するかどうかを決定する必要があります。

于 2013-11-02T03:01:38.980 に答える
0

ここで必要なのは、キーボードの一部のキーを無効にすることではありません。ただし、キーを押して文字が送信されると、比較することができます。たとえば、特定のテストに失敗した場合、最後の入力を削除できます。

bool validChar(const char &c) {
    return (c >= '0' && c <= '9');
}

次に、最終的な入力をテストして、ユーザーが整数以外の値を送信する方法を見つけていないことを確認する必要があります。

于 2013-11-02T03:00:53.433 に答える