如何在C ++中将结构存储在文本文件中
how to store struct in a text file in c++
我想将结构的元素存储到一个文本文件中。我有多个输入,这就是我所做的,但是,我只能存储最新的输入,而不是所有的输入。先谢谢您的帮助!这是我的代码:
#include <iostream>
#include <fstream>
using namespace std;
struct ProcessRecords {
string ID;
int arrival;
int wait;
int burst;
void putToFile() {
ofstream input;
input.open ("process.txt");
input << ID << "\t" << arrival << "\t" << wait << "\t" << burst << endl;
input.close();
}
};
int main() {
int numProcess;
int algo;
cout << "\n\t\t=== CPU SCHEDULING ALGORITHMS ===\n";
cout << "\n\t\tEnter number of processes: ";
cin >> numProcess;
ProcessRecords process[numProcess];
string processID[numProcess];
int arrTime[numProcess];
int waitTime[numProcess];
int burstTime[numProcess];
cout << endl << endl;
for (int i = 0; i < numProcess; i++) {
cout << "\n\tEnter process ID for Process " << i+1 << ":\t ";
cin >> processID[i];
process[i].ID = processID[i];
cout << "\n\t\tEnter arrival time for " << processID[i] << ":\t ";
cin >> arrTime[i];
process[i].arrival = arrTime[i];
cout << "\n\t\tEnter waiting time for " << processID[i] << ":\t ";
cin >> waitTime[i];
process[i].wait = waitTime[i];
cout << "\n\t\tEnter burst time for " << processID[i] << ":\t ";
cin >> burstTime[i];
process[i].burst = burstTime[i];
process[i].putToFile();
}
return 0;
}
这是我的示例输出:
首先在 C++ 中(C++ 我指的是标准 C++ 而不是扩展),数组的大小必须是 编译时间常数。所以你不能写这样的代码:
int n = 10;
int arr[n]; //incorrect
正确的写法是:
const int n = 10;
int arr[n]; //correct
出于同样的原因,您的代码中的以下语句不正确:
int arrTime[numProcess]; //incorrect because size of array must be fixed and decide at compile time
其次,您应该附加到文本文件而不是覆盖它。要以追加模式打开文件,您可以使用:
input.open("process.txt", ofstream::app);
您可以使用 input.open("process.txt", ofstream::app);
检查 here 该程序是否按您希望的方式运行(追加)。还要注意我所说的关于数组大小是编译时间常数的内容。我没有在我给出的 link 中更改它。您可以使用 std::vector
作为可变大小的容器。
我想将结构的元素存储到一个文本文件中。我有多个输入,这就是我所做的,但是,我只能存储最新的输入,而不是所有的输入。先谢谢您的帮助!这是我的代码:
#include <iostream>
#include <fstream>
using namespace std;
struct ProcessRecords {
string ID;
int arrival;
int wait;
int burst;
void putToFile() {
ofstream input;
input.open ("process.txt");
input << ID << "\t" << arrival << "\t" << wait << "\t" << burst << endl;
input.close();
}
};
int main() {
int numProcess;
int algo;
cout << "\n\t\t=== CPU SCHEDULING ALGORITHMS ===\n";
cout << "\n\t\tEnter number of processes: ";
cin >> numProcess;
ProcessRecords process[numProcess];
string processID[numProcess];
int arrTime[numProcess];
int waitTime[numProcess];
int burstTime[numProcess];
cout << endl << endl;
for (int i = 0; i < numProcess; i++) {
cout << "\n\tEnter process ID for Process " << i+1 << ":\t ";
cin >> processID[i];
process[i].ID = processID[i];
cout << "\n\t\tEnter arrival time for " << processID[i] << ":\t ";
cin >> arrTime[i];
process[i].arrival = arrTime[i];
cout << "\n\t\tEnter waiting time for " << processID[i] << ":\t ";
cin >> waitTime[i];
process[i].wait = waitTime[i];
cout << "\n\t\tEnter burst time for " << processID[i] << ":\t ";
cin >> burstTime[i];
process[i].burst = burstTime[i];
process[i].putToFile();
}
return 0;
}
这是我的示例输出:
首先在 C++ 中(C++ 我指的是标准 C++ 而不是扩展),数组的大小必须是 编译时间常数。所以你不能写这样的代码:
int n = 10;
int arr[n]; //incorrect
正确的写法是:
const int n = 10;
int arr[n]; //correct
出于同样的原因,您的代码中的以下语句不正确:
int arrTime[numProcess]; //incorrect because size of array must be fixed and decide at compile time
其次,您应该附加到文本文件而不是覆盖它。要以追加模式打开文件,您可以使用:
input.open("process.txt", ofstream::app);
您可以使用 input.open("process.txt", ofstream::app);
检查 here 该程序是否按您希望的方式运行(追加)。还要注意我所说的关于数组大小是编译时间常数的内容。我没有在我给出的 link 中更改它。您可以使用 std::vector
作为可变大小的容器。