cin.get (); не работает, когда я положил его в операторе if

0

Я использовал cin.get(), чтобы заставить программу останавливаться и ждать ввода пользователя, и она работает нормально. В тот момент, когда я помещал его в оператор if, он просто пропускает этот период ожидания и продолжает работать с кодом? Как я могу это решить. Вот раздел, который не работает.

  do
    {
        cout << "\n\n\nEnter the number of one of the following and I will explain!\n";
        cout << "1.integer  2.boolian   3.floats   4.doubles   5.character";
        cout << "\n\n[when you are done type 'done' to continue]\n\n";
        cin >> option;

        if (option = 1);
        {
            cout << "\nInteger is the variable abbreviated as 'int' this allows C++ to only";
            cout << "\nreadwhole and real numbers \n\n";
            cin.get(); //this is the part where it just skips.. it should wait
        }

    } while (var = 1);
  • 0
    Поскольку @ 0x499602D2 указывает в комментариях на мой ответ, у вас есть куча других проблем. Обязательно прочитайте эти комментарии.
Теги:

1 ответ

1

Проблема в том, что cin >> option будет извлекать любое целое число во входном потоке, но оставит следующий символ новой строки (который находится от нажатия ввода после ввода значения). Когда вы делаете cin.get() он просто извлекает этот символ новой строки, который уже существует. Как и многие другие подобные вопросы, решение состоит в том, чтобы очистить входной поток после того, как вы извлекли его в option:

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Вы также используете назначение (=), где вы должны сравнивать для равенства (==).

  • 0
    +1 Также while (var = 1) и if (option = 1); , :)
  • 0
    @ 0x499602D2 Спасибо, не заметил. Добавил это в мой ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню