如何将文件行读入结构数组

时间:2016-11-07 13:39:34

标签: c++ struct ifstream

我正在尝试读取一个文件,其中包含每行中22个进程的到达时间和突发时间。我正在尝试将这些值存储到结构数组中,以便每次进程获得CPU周期时我都可以更新它们。虽然读取工作不成功。帮我弄清楚我错过了什么。作为文本文件的文件如下所示: 30 0.78 \ n 54 17.28 \ n 97 32.82 \ n 。 。 。

#include<iostream>
#include<fstream>

using namespace std;        
const int process_cnt=22;

struct process{        
          int at;
          float bt;
          float rt;
};

process init_q[process_cnt],ready_q[process_cnt];        
void getData(ifstream& inData,process init_q[]);

int main(){        
    ifstream inData;        
    getData(inData,init_q);                
    cout<<"Test";        
    return 0;
}

void getData(ifstream& inData,process init_q[]){                        
    inData.open("input.txt");        
    while(inData){          
        inData>>init_q->at>>init_q->bt;
        cout<<init_q->at<<" "<<init_q->bt<<endl;//check if read was succesful           
    }
    inData.close();         
}

1 个答案:

答案 0 :(得分:2)

您可能缺少的是当前数组条目的索引:

void getData(ifstream& inData, process init_q[]) {
    inData.open("input.txt");
    int index = 0;
    while (inData) {
        process *entry = init_q[index++];
        inData >> entry->at >> entry->bt;
        cout << entry->at << " " << entry->bt << endl;//check if read was succesful
    }
    inData.close();
}

我跳过了检查当前索引是否低于const 22的部分。