C++程序无法打开payroll.dat文件,求文件路径解决方案
文件打开错误排查:Payroll程序无法读取payroll.dat
我要完成一个项目,设计包含小时工资率和工作时长数据成员的Payroll类,编写一个包含7个对象数组的程序。程序需要从payroll.dat文件读取每位员工的工作时长和小时工资率,调用类函数将信息存入对应对象,再调用类函数返回并显示每位员工的总工资。我已经写好代码并准备了payroll.dat文件,但运行时弹出“Error opening file”提示,目前文件放在源文件文件夹里,请问是不是要把它移到别的位置?
我的代码
#include <iostream> #include <fstream> using namespace std; class Payroll { public: void setHours(double hours) { hoursWorked = hours; } void setRate(double rate) { hourlyRate = rate; } double getGrossPay() const { return hoursWorked * hourlyRate; } private: double hoursWorked; double hourlyRate; }; int main() { ifstream inputFile("payroll.dat"); if (!inputFile) { cerr << "Error opening file." << endl; return 1; } Payroll employees[7]; for (int i = 0; i < 7; i++) { double hours, rate; inputFile >> hours >> rate; employees[i].setHours(hours); employees[i].setRate(rate); } inputFile.close(); for (int i = 0; i < 7; i++) { cout << "Employee " << i + 1 << " gross pay: $" << employees[i].getGrossPay() << endl; } return 0; }
payroll.dat文件内容
40.0 10.00 38.5 9.50 16.0 7.50 22.5 9.50 40.0 8.00 38.0 8.00 40.0 9.00
问题解答
出现这个错误是因为程序默认从工作目录读取文件,而不是你放源文件的文件夹。多数IDE会把编译后的可执行文件放到单独的输出目录(比如Debug或Release文件夹),这时候源文件目录里的payroll.dat不在程序的查找路径内,所以打不开。
你可以用以下几种方法解决:
- 直接把
payroll.dat复制到可执行文件所在的文件夹(也就是IDE生成的Debug/Release目录)。 - 在代码里使用文件的绝对路径,比如:
ifstream inputFile("C:/Users/xxx/ProjectFolder/payroll.dat");(Windows系统注意路径用/或者转义的\\)。 - 配置IDE的工作目录:在项目设置里,把程序运行时的工作目录改成源文件所在的文件夹,这样程序启动时会自动从该目录查找文件。
内容的提问来源于stack exchange,提问作者chrisward
相关产品推荐
相关产品推荐

