gpt4 book ai didi

c++ - "cin.exceptions"和 "exception"在这里是什么意思

转载 作者:行者123 更新时间:2023-11-30 05:34:11 25 4
gpt4 key购买 nike

我目前是一名工科学生,对编程有着浓厚的兴趣和热情。这些天我试图通过一些在线引用资料和教程网站来学习 C++。但是有一些问题我无论如何也不能自己弄清楚。

有人可以帮我解释一下 cin.exceptions(ios_base::failbit);//throw exception on failbit set 字面意思是?

我知道ios_base::failbit 和异常(exception 是STL 中的一个类)。

按照我的理解,意思是当输入不是数字时,会产生failbit flag,一旦发生,系统就会抛出异常。

我很困惑为什么在 catch 括号中是 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();
}
}
}

最佳答案

cin.exceptions(...)中,exceptions是一个函数名。具体this function让我们为流设置一个新的异常掩码。

catch(exception ex)中,exception是一个类型名。具体类型 exception这是异常的基本类型。在这种情况下,这意味着您将捕获任何异常,因为它们都应该继承自 exception

关于c++ - "cin.exceptions"和 "exception"在这里是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34367065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com