Я в настоящее время студент-студент-инженер, у которого есть большой интерес и страсть в программировании. В эти дни я пытался изучить C++ через некоторые онлайн-ссылки и учебные материалы. Но есть какой-то вопрос, который я все равно не могу понять сам.Что здесь означает «cin.exceptions» и «exception»
Может кто-то прошу вас помочь мне объяснить, что именно cin.exceptions(ios_base::failbit); //throw exception on failbit set
буквально означает?
Я знаю ios_base::failbit
и исключения (- это класс в STL).
Согласно моему пониманию, это означает, что когда вход не является числом, он выдает флаг failbit
, и как только это произойдет, система выкинет исключение.
Я смущен, почему в скобах для улова это exception
, а не exceptions
.
//this is a piece of code on my lecture notes
#include <iostream>
#include <string>
using namespace std;
int read_int(const string& prompt);
int main()
{
int n;
n=read_int("Enter a number: ");
cout<<"n: "<<n<<endl;
}
int read_int(const string& prompt){
cin.exceptions(ios_base::failbit);//Why this line "exceptions" different from the next "exception"
int num=0;
while(true){
try{
cout<<prompt;
cin>>num;
return num;
}catch(exception ex)// what does "exception" here mean?
{
cout<<"Bad numeric string--try again\n";
cin.clear();
cin.ignore();
}
}
}
Спасибо большое! Я, наконец, понял, что исключения - это функция-член класса std :: ios ... Действительно просветил меня. Спасибо!! – Des1gnWizard
Добро пожаловать :) –
Я боролся за эту форму исключений за 5 дней ... И, наконец, к счастью, я случайно увидел главу 29.3 руководства по базовой библиотеке Apache C. В первом предложении говорится: «По умолчанию поток не генерирует никакого исключения» LOL ... тогда я вдруг понял все, cin.exceptions (...) фактически активирует исключения в потоке, или вещи, которые я вводил, будут сохранены в буфер и сделать что-то плохое со следующим вводом (надеюсь, что мое понимание правильное ...). Вздох ... может быть, мне действительно нужно получить полезную книгу, чтобы внимательно изучить ее. , – Des1gnWizard