2016-10-17 5 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 guess; 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

Смежные вопросы