我的程序没有从文件中读取并输入数据
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;
打印默认构造的Payroll
的grosspay
。
您需要执行以下操作,而不是分配给局部变量:
totalPay[index] = Payroll(hours, payrate);
构造一个正确的Payroll
对象并将其分配给数组中的索引。
【讨论】:
以上是关于我的程序没有从文件中读取并输入数据的主要内容,如果未能解决你的问题,请参考以下文章