You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何将结构体数据存入文本文件?仅保存最新输入如何解决

问题原因

ofstream默认以覆盖写入模式打开文件,你每次调用putToFile()方法时,都会先清空process.txt的原有内容再写入新数据,所以最终文件里只会保留最后一组输入的记录。

解决方案

这里提供两种可选的修复方式:

方案1:改动最小,直接修改文件打开模式

给open方法添加ios::app参数,指定以追加模式打开文件,不会清空原有内容,修改后的putToFile代码如下:

void putToFile() {
    ofstream input;
    input.open ("process.txt", ios::app);
    input << ID << "\t" << arrival << "\t" << wait << "\t" << burst << endl;
    input.close();
}

方案2:性能更优,统一写入所有数据

频繁打开关闭文件会产生不必要的IO开销,更推荐的做法是所有数据录入完成后,统一打开一次文件写入全部记录:

  1. 删除结构体中的putToFile方法
  2. 在主函数的录入循环结束后,添加如下批量写入逻辑:
ofstream outFile("process.txt");
for (int i = 0; i < numProcess; i++) {
    outFile << process[i].ID << "\t" << process[i].arrival << "\t" << process[i].wait << "\t" << process[i].burst << endl;
}
outFile.close();

额外优化建议

你代码中ProcessRecords process[numProcess];的变长数组写法属于C语言特性,不符合C++标准,仅部分编译器做了兼容,更规范的写法是使用STL容器vector,修改为:

#include <vector>
// 声明数组的位置替换为:
vector<ProcessRecords> process(numProcess);

内容的提问来源于stack exchange,提问作者peanut butter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:57:01