Я изучаю C ++, поэтому я не до конца понимаю, что происходит с моим кодом, но из того, что я смог найти, кажется, что это может быть какой-то проблемой с буфером.
#include <stdio.h>
#include <vector>
#include <iostream>
#include <typeinfo>
using namespace std;
bool stopRun = true;
int height, average, total, count;
vector <int> heights;
int main ()
{
while (stopRun)
{
cout << "Enter a height, or 'end' to quit: ";
cin >> height;
if (typeid(height).name() == "i")
{
heights.push_back(height);
cout << heights[0];
count++;
}
else if (typeid(height).name() == "i")
{
cout << "\nPlease enter an integer: ";
continue;
}
if (count == 5)
{
stopRun = false;
}
}
for (int i = 0; i < heights.size(); i++)
{
total += heights[i];
cout << "\nTotal: " << total;
}
return 0;
}
По какой-то причине этот код будет постоянно выводить: «Введите высоту или« конец »для выхода:». В более ранней версии было бы выведено: «Введите высоту или« конец »для выхода: введите целое число:».
Что я думаю, так это то, что мой "cin >> height"; строка выводит результат из «Пожалуйста, введите целое число:» и обрабатывает его как мой ввод, который идентифицирует его как не целочисленный тип, который запускает бесконечный l oop.
Как очистить входной буфер, чтобы он не вводил операторы cout? Или это даже проблема, которую я испытываю здесь?
Заранее спасибо!