Вопрос про cin в C ++ - PullRequest
       11

Вопрос про cin в C ++

1 голос
/ 24 июня 2010

Когда я объявляю int weight, а затем ввожу двойное значение 165.1, второе cin >> height; не работает, и сообщения об ошибках нет.Ты можешь сказать мне, почему?

Используется консольное приложение VS2010.

#include <iostream>

using namespace std;

const double lbs_to_kg = 2.2046, inches_to_meter = 39.370;

int main()
{
    int weight, height;
    double kilograms, meters;

    cout << "\nEnter weight in pounds: ";
    cin >> weight;
    kilograms = weight / lbs_to_kg;
    cout << "\nEnter height in inches: ";
    cin >> height;
    meters = height / inches_to_meter;
    cout << "\nYour BMI is approximately "
        << "\nbody fat ratio is "
        << kilograms / (meters * meters)
        << ". Under 25 is good."
        << endl;

}

output:

Enter weight in pounds: 165.1

Enter height in inches:
Your BMI is approximately
body fat ratio is 1.57219e-013. Under 25 is good.

1 Ответ

13 голосов
/ 24 июня 2010

Если вы попытаетесь cin извлечь данные в переменную, которая не может их содержать, данные останутся во входном потоке, а cin помечается как сбойный.Вам нужно проверить, не удалось ли это с помощью !cin, и использовать cin.clear(), чтобы очистить флаг сбоя, чтобы вы могли читать снова (будущие операции извлечения будут автоматически завершаться неудачей, пока флаг не будет сброшен).Вы можете либо извлечь данные в другую переменную, которая может их содержать, либо использовать cin.ignore(), чтобы отбросить их

...