You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:09:23