0

Ok I was able to validate user input if the user would enter a larger number or a negative number but how do you validate if the user happens to enter a letter or word, even character i.e % # @, or if the user enters all. How do you block the user to only enter a number for example 1 to 6?

Also, What about if the user presses space? Please show examples.

Is there an easier way as to using ASCII character set in maybe a switch case.

Edited by eblanco1: Forgot to add important information

3
Contributors
2
Replies
8
Views
5 Years
Discussion Span
Last Post by Narue
0

Read the entire line as a string and look at the input character by character.

You post your code that shows your attempt and explains what happened. Then we will help you make corrections.

0

How do you block the user to only enter a number for example 1 to 6?

You write your own raw input handler to read keystrokes and interpret them as desired. It should go without saying that this is terribly confusing unless you own the canvas[1] or are taking input from a GUI[2]. A much easier and more user-friendly method is simply to allow the user to type whatever he or she wants, then validate it and respond accordingly:

#include <iostream>
#include <stdexcept>
#include <boost/lexical_cast.hpp>

int main() try
{
    int value;
    
    while (true) {        
        std::cout << "Enter a number from 1 to 6: ";
        
        std::string line;
        
        if (!getline(std::cin, line))
            throw std::runtime_error("Invalid input");
        
        try {
            value = boost::lexical_cast<int>(line);
            
            if (value >= 1 && value <= 6)
                break;
            else
                std::cerr << "Out of range\n";
        } catch (boost::bad_lexical_cast&) {
            std::cerr << "Invalid number" << '\n';
        }
    }
    
    std::cout << "The square of " << value << " is " << value * value << '\n';
} catch (std::exception& ex) {
    std::cerr << "Fatal error: " << ex.what() << '\n';
}

[1] ie. You're using a "primitive" graphics engine such as curses to draw in the console.
[2] In which case you should be using an appropriate input control for numeric values rather than straight text.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.