Я использовал 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);
Проблема в том, что cin >> option
будет извлекать любое целое число во входном потоке, но оставит следующий символ новой строки (который находится от нажатия ввода после ввода значения). Когда вы делаете cin.get()
он просто извлекает этот символ новой строки, который уже существует. Как и многие другие подобные вопросы, решение состоит в том, чтобы очистить входной поток после того, как вы извлекли его в option
:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Вы также используете назначение (=
), где вы должны сравнивать для равенства (==
).
while (var = 1)
и if (option = 1);
, :)