Как правильно читать беззнаковые переменные int из файла, используя ifstream?

Мой код читает беззнаковые переменные int из текстового файлаInput_File_Name.

unsigned int Column_Count; //Cols
unsigned int Row_Count;//Rows

try {
    ifstream input_stream;
    input_stream.open(Input_File_Name,ios_base::in);
    if (input_stream) {
        //if file is opened
        input_stream.exceptions(ios::badbit | ios::failbit);
        input_stream>>Row_Count;
        input_stream>>Column_Count;


    } else {
        throw std::ios::failure("Can't open input file");
        //cout << "Error: Can't open input file" << endl;
    }

} catch (const ios::failure& error) {
    cout << "Oh No!!" << error.what() << endl;          
} catch (const exception& error) {
    cout << error.what() <<"Oh No!!" << endl;
} catch (...) {
    cout << "Unknown exception" << endl;
}

Работает отлично. Но когда я заполняю текстовый файл с неправильными данными

33abcd4  567fg8

Это работает таким образом:

input_stream>>Row_Count; //Row_Count = 33;
input_stream>>Column_Count; // throws an ios::failure exception

Почему не эта строкаinput_stream>>Row_Count; бросить исключение? Как я понял, input_stream рассматривает любой нечисловой символ как разделитель, и на следующем шаге пытается прочитать «abcd». Это так? Как установить символ пробела в качестве разделителя, чтобы броситьios::failure исключение из этой строки кодаinput_stream>>Row_Count; во время чтения "33abcd4"?

Ответы на вопрос(2)

Ваш ответ на вопрос