2016-10-17 8 views
-3

文字や文字列の場合、ユーザー入力を修正するC++でエラー処理を行う必要があります。これを処理するには、.at()、.length()、およびatoiを使用する必要があります。私はそれらを実装する方法/場所が問題であるかどうかはわかりません。入力検証にC++によるエラー処理

#include <iostream> 
#include <stdlib.h> 
#include <string> 
#include <time.h> 

using namespace std; 

int main() { 


    srand(time(0)); 
    int number; 
    number = rand() % 50 + 1; 
    int guess; 
    int x; 


    for (x = 5; x > 0; x--) { 
     cout << "Guess my number, it's between 0-50. You have 5 guesses: "; 
     cin >> guess; 
     if (guess < number){ 
      cout << "Your guess was too low" << endl; 
     } 
     else if (guess > number){ 
      cout << "You guess was too high" << endl; 
     } 
     else { 
      cout << "You're exactly right!" << endl; 
     break; 
    } 
} while (guess != number){ 
    break; 
} 




return 0; 

}

+0

ユーザ入力でエラーを捕まえようとしている場合は、ユーザ入力を取得する場所にエラーキャッチコードを置きます。方法については、私はあなたが既に0より小さいかどうかをチェックすることができると確信しています。 – csmckelvey

+0

int推測; cin >> guess; ユーザーが手紙を入力したらどうなると思いますか? – UKMonkey

答えて

2

最善のアプローチは、std::stringに読み出し機能、必要とされるどのようなチェックを書くことであり、それはテストを通過したときにのみ値を返す:

int get_value() { 
    std::string input; 
    int value = -1; 
    while (value < 0) { 
     std::cout << "Gimme a value: "; 
     std::getline(std::cin, input); 
     try { 
      value = std::stoi(input); 
     } catch(...) { 
      value = -1; 
     } 
    } 
    return value; 
} 
+0

"関数を書く":新しいプログラマの間違い+1は、神関数を書くことです。 – UKMonkey