我的.txt文件包含以下内容
12345
John Smith
45 12.50
54234
Joe Paul
32 10.25
12324
Chris Lee
43 22.50
第一个int是员工ID,然后是字符串名称,然后是小时和工资率(浮动)。
我的计划:
using namespace std;
const int Size = 10;
typedef int intarray[Size];
typedef float farray[Size];
typedef string starray[Size];
void readdata(intarray,starray,intarray,farray, ifstream &);
void print(intarray,starray,intarray,farray,ifstream &);
int main()
{
ifstream fin("data.txt");
//ofstream fout;
starray EmployeeName;
intarray EmployeeID,EmployeeHoursWorked;
farray EmployeeRate;
readdata(EmployeeID,EmployeeName,EmployeeHoursWorked,EmployeeRate,fin);
print(EmployeeID,EmployeeName,EmployeeHoursWorked,EmployeeRate,fin);
cin.get();
cin.ignore();
}
我的功能,我的代码没有正确读取文件。
void readdata(intarray ID, starray Name, intarray Hours, farray Rate, ifstream & infile)
{
for(int i = 0; i < Size; i++)
{
//this code is not working as intended
infile >> ID[i];
getline(infile, Name[i]);
infile >> Hours[i] >> Rate[i];
infile.ignore();
}
}
我没有得到任何结果。
void print(intarray ID, starray Name, intarray Hours, farray Rate, ifstream & infile)
{
for(int i = 0; i < Size; i++)
{
cout << ID[i] << endl;
cout<<Name[i]<<endl;
cout << Hours[i] << Rate[i] << endl;
}
}
答案 0 :(得分:0)
当您在readdata中调用getline时,您正在读取ID之后的行尾字符。在调用getline之前,您需要使用名称定位在该行上。试试这个
infile >> ID[i];
infile.ignore(); //Consume the new line char
getline(infile, Name[i]);
infile >> Hours[i] >> Rate[i];