如何在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 作为可变大小的容器。