繁体   English   中英

如何在c ++中将结构存储在文本文件中

[英]how to store struct in a text file in c++

我想将 struct 的元素存储到文本文件中。 我有多个输入,这就是我所做的,但是,我只能存储最新的输入而不是所有的输入。 在此先感谢您的帮助! 这是我的代码:

#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);在此处检查程序是否按您的意愿工作(追加input.open("process.txt", ofstream::app); . 还要注意我所说的数组大小是编译时间常数。 我没有在我提供的链接中更改它。 您可以将std::vector用于可变大小的容器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM