c++ - 如何将文件的行读入结构数组

标签 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();         
}

最佳答案

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

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 的部分。

关于c++ - 如何将文件的行读入结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40466616/

相关文章:

c++ - 如何在 QlikView 中制作自定义数据源?

c++ - EnumProcesses() 与 CreateToolhelp32Snapshot()

c - 将文件读入结构

c++ - 在 C++ 中迭代流后返回到流的开头

c++ - 如何构造可以替换 typedef vector<vector<T>> Type 的类

C++ Armadillo : double for loop using iterators

c - 如何在C中将struct转换为char数组

C++ 错误 C2661 : no overloaded function takes x arguments

c++ - 在 C++ 中向/从二进制文件写入/读取结构

c++ - 为什么我不能在构建 ifstream 时传递它?