nakomis
nakomis

Reputation: 27

C++ console not showing menu

If the user selects 1 or 2, function doesn't run. Any suggestions?

#include <iostream>
using namespace std;

void getTitle();
void getIsbn();

int main()
{
    int choice = 0;      // Stores user's menu choice

    do
    {
        // Display menu
        cout << "             Main Menu\n\n\n";

        // Display menu items
        cout << "   1. Choose 1 to enter Title.\n";
        cout << "   2. Choose 2 to enter ISBN.\n";
        cout << "   3. Choose 3 to exit.\n";

        // Display prompt and get user's choice
        cout << "   Enter your choice: ";
        cin  >> choice;

        // Validate user's entry
        while (choice < 1 || choice > 3)
        {
            cout << "\n   Please enter a number in the range 1 - 3. ";
            cin  >> choice;
        }

        switch (choice)
        {
        case 1:
            getTitle();
            break;
        case 2:
            getIsbn();
            break;
        }
    } while (choice != 3);

    return 0;
}

void getTitle()
{
    string title;
    cout << "\nEnter a title: ";
    getline(cin, title);
    cout << "\nTitle is " << title << "\n\n\n";
}

void getIsbn()
{
    string isbn;
    cout << "\nEnter an ISBN: ";
    getline(cin, isbn);
    cout << "\nISBN is " << isbn << "\n\n\n";
}

Upvotes: 0

Views: 395

Answers (1)

Ernest Friedman-Hill
Ernest Friedman-Hill

Reputation: 81704

The functions should certainly get called. What will happen, though, is that the newline generated when you press "Enter" to type the number will get returned by the getline(), and the function will return without really prompting you. You need to clear that newline. You can use ignore() to do this: add cin.ignore(); immediately after reading in choice to ignore the one character.

Upvotes: 3

Related Questions