用c++
时间: 2023-07-01 09:24:11 浏览: 149
好的,这是一个使用C++实现的程序,用于实现你的要求:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class FileOpenException : public exception {
public:
const char* what() const throw() {
return "无法打开文件!";
}
};
double read_file(string filename) {
ifstream file(filename);
if (!file.is_open()) {
throw FileOpenException();
}
vector<int> nums;
int num;
while (file >> num) {
nums.push_back(num);
}
double sum = 0.0;
for (int n : nums) {
sum += n;
}
return sum / nums.size();
}
int main() {
string filename;
cout << "请输入文件名:";
cin >> filename;
try {
double avg = read_file(filename);
cout << "文件中的整数平均值为:" << avg << endl;
}
catch (FileOpenException& e) {
cerr << e.what() << endl;
}
return 0;
}
```
首先,我们定义了一个名为`FileOpenException`的自定义异常类,用于表示文件打开异常。这个类继承自标准库中的`exception`类,并重写了其中的`what()`函数,用于返回错误信息。
然后,我们定义了一个函数`read_file`,该函数接收文件名作为参数,并尝试打开该文件并读取其中的整数,计算平均值并返回结果。在函数中,如果文件不存在或无法打开,则会抛出自定义的`FileOpenException`异常。
在主函数中,我们首先要求用户输入文件名,并尝试调用`read_file`函数来计算整数的平均值。如果`read_file`函数抛出了异常,则我们使用`try-catch`语句来捕获并处理异常,在异常处理程序中输出错误信息。
希望这个程序可以满足你的要求!
阅读全文