Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;读取字符串int将从文本文件浮动到数组/字符串中_C++_Arrays_String_File Io - Fatal编程技术网

C++ C++;读取字符串int将从文本文件浮动到数组/字符串中

C++ C++;读取字符串int将从文本文件浮动到数组/字符串中,c++,arrays,string,file-io,C++,Arrays,String,File Io,我的.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 st

我的.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 readdata(阵列ID、星光名称、阵列小时数、远射率、ifstream和INFLIE)
{
对于(int i=0;i>ID[i];
getline(填充,名称[i]);
填充>>小时[i]>>速率[i];
infle.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;


  }     
}   
void打印(阵列ID、星光名称、阵列小时数、远光率、ifstream和infile)
{
对于(int i=0;icout在readdata中调用getline时,您正在读取ID后的行尾字符。在调用getline之前,需要将您放置在具有名称的行上。请尝试此操作

infile >> ID[i];
infile.ignore(); //Consume the new line char
getline(infile, Name[i]);
infile >> Hours[i] >> Rate[i];

Re:P.S.:您可以使用赋值语句将数据填充到数组中,以避免读取问题。稍微进行一点错误处理会有很大帮助。请尝试添加一些代码,如
if(infle.bad())我很确定
print
不应该读取任何文件。是的,为什么在
print
函数附近有
infle
呢?哦,是的。小错误。它仍然给我错误的输出。它正确地读取了第一行“12345”,然后吐出垃圾/随机数