Как перехватить исключение несоответствие типов ввода объекта cin?

Рейтинг: 0Ответов: 1Опубликовано: 24.11.2014

Читаем исходник. Нужно перехватить исключение несоответствие типов ввода

#include <iostream>
#include <string>

using namespace std;

int main(){
    int digit;
    cout << "enter a five digit: ";

    try{
        cin >> digit; 
    } catch (...){ // нужно перехватить исключение несоответствия типов ввода
        cout << "error" << endl;
        return 1;
    }

    if (digit > 99999){
        cout << "error" << endl;
        return 1;
    }

    char buf[6];

    _itoa_s(digit, buf, 10);

    for (int i = 0; i < 5; i++){
        cout << buf[i] << "_";
    }

    cout << endl;

    return 0;
}

Ответы

▲ 3Принят

Нашел на SO https://stackoverflow.com/questions/12754486/test-cin-exception

int main(void)
{
    int n = 0;
    cin.exceptions(istream::failbit | istream::badbit);

    try
    {
        cin >> n;
    }
    catch(istream::failure e)
    {
        cerr << "Exception" << endl;

    }
    return 0;
}