我的程序没有从文件中读取并输入数据

Posted

技术标签:

【中文标题】我的程序没有从文件中读取并输入数据【英文标题】:My program is not reading from a file and inputting the data 【发布时间】:2020-07-05 22:01:01 【问题描述】:

我编写了一个程序来计算 7 名员工的总工资。该程序从文件 (payroll.dat) 中读取数据,以获取数据成员“小时”和“工资率”的数据。所有 7 位员工的输出为 0.00,数据文件 >> 小时;数据文件>>工资率;似乎是正确的。我不知道为什么程序没有从文件中读取数据并将数据输入到成员中。

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;

class Payroll

private:
    double hours;
    double payrate;
    double grosspay;

public:
    Payroll()
    
        hours = 0.0;
        payrate = 0.0;
        grosspay = 0.0;

    

    Payroll(double h, double p)
    
        hours = h;
        payrate = p;
        grosspay = hours * payrate;
    

    double setHours(double h)
    
        hours = h;
    

    double setPayrate(double p)
    
        payrate = p;
    

    double getHours()
    
        return hours;
    

    double getPayrate()
    
        return payrate;
    

    double getGrosspay()
    
        return grosspay;
    

;

const int employees = 7;

int main()

    double hours;
    double payrate;
    double grosspay;


    int index;

    Payroll totalPay[employees];
    
        ifstream datafile;

        datafile.open("payroll.dat");

        if (!datafile)
            cout << "Error opening data file \n";

        else
        
            for (index = 0; index < 7; index++)  
            
                datafile >> hours;
                datafile >> payrate;
                grosspay = hours * payrate;

                
                cout << endl;
                cout << fixed << setprecision(2);
                cout << "Employee" << (index + 1) << ": " << totalPay[employees].getGrosspay() << endl;
            
        

        datafile.close();
    

    return 0;
 

【问题讨论】:

【参考方案1】:

在你最里面的for 循环中,你正在做:

grosspay = hours * payrate;

但变量grosspay 只是一个局部变量,不会更新totalPay 数组。所以这一行:

cout << "Employee" << (index + 1) << ": " << totalPay[employees].getGrosspay() << endl;

打印默认构造的Payrollgrosspay

您需要执行以下操作,而不是分配给局部变量:

totalPay[index] = Payroll(hours, payrate);

构造一个正确的Payroll 对象并将其分配给数组中的索引。

【讨论】:

以上是关于我的程序没有从文件中读取并输入数据的主要内容,如果未能解决你的问题,请参考以下文章

从麦克风无损读取

编辑 plist 文件(目标 c)

读取,写入和保存数据Android应用程序[重复]

如何处理文本文件中两个单词之间没有被我的程序读取为空格的大间隙?

在bash中从用户输入中读取文件并存储在变量中。

为啥我的程序没有将字符从文件输入到二维数组中?