我有格式的文件:讀入一個對象?
3 // num of tasks in taskset1
1 2 3 //priority for each task
10 20 30 //exec time, deadline , period
23 34.5 45
23 56 98
4 // num of tasks in taskset2
1 2 4 3//priority for each task
10 20 30 //exec time, deadline , period
23 34.5 45
23 56 98
34 54 100
......
我需要直接讀取文本文件轉換成一個結構對象taskset
。
struct tasks
{
double wcet;
double deadline;
double period;
int priority;
};
struct tasksets
{
tasks task[100];
double num_tasks;
} taskset[100];
我將內容存儲在一個數組中,然後存入工作正常的對象中。但由於我的文件太大,我的程序被殺死了。我需要不使用巨大的數組。而不是100級不同的對象只是使用了taskset
一個對象。有關如何做的建議?
int main(int argc, char* argv[])
{
double aa[1000][1000];
int u = 0;
int v = 0;
int i = 0;
int j = 0;
int k = 0;
string temp; // a temporary variable used to store string data
vector<vector<string>> tokens;
while (getline(cin, temp))
{
v = 0;
istringstream iss(temp);
vector<string> tokens_in_line;
while (iss >> temp)
{
double temp1 = atof(temp.c_str());
aa[u][v] = temp1;
v++;
tokens_in_line.push_back(temp);
}
u++;
if (!tokens_in_line.empty())
{
tokens.push_back(tokens_in_line);
}
}
cout << "Execution started" << endl;
for (i = 0; i < u; i = i + j)
{
cout << "Task set #" << setnum << endl;
taskset[setnum].num_tasks = aa[i][0];
cout << "Number of tasks: " << taskset[setnum].num_tasks << endl;
for (k = 0; k < taskset[setnum].num_tasks; k++)
{
taskset[setnum].task[k].priority = aa[i + 1][k];
taskset[setnum].task[k].wcet = aa[i + 2 + k][0];
taskset[setnum].task[k].deadline = aa[i + 2 + k][1];
taskset[setnum].task[k].period = aa[i + 2 + k][2];
cout << "Task " << k + 1 << ":";
cout << " Priority : " << taskset[setnum].task[k].priority;
cout << " WCET : " << taskset[setnum].task[k].wcet;
cout << " Deadline : " << taskset[setnum].task[k].deadline;
cout << " Period : " << taskset[setnum].task[k].period << endl;
}
j = k + 2;
setnum++;
}
return 0;
}