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

C++使用ofstream循环写入文本文件仅保留最后一条内容的问题

问题原因

你在循环内每次创建ofstream对象打开文件时,默认采用截断模式(ios::trunc),会清空文件原有内容后再写入。三次循环执行完毕,只有最后一次写入的plane被保留。同时原代码中的文件路径使用单反斜杠,会触发C++转义字符问题,导致路径识别错误。

解决方案

提供两种可行的修复方式:

方式一:单次打开文件,循环写入

将文件的打开/关闭操作移到循环外部,避免重复清空文件:

#include <fstream>
#include <string>
using namespace std;

int main() {
    string vehicle[3] = { "car", "bike", "plane" };
    // 路径使用双反斜杠转义,或改用正斜杠
    ofstream out_file("C:\\Users\\Gadr\\Desktop\\test.txt");
    
    if (out_file.is_open()) {
        for (int i = 0; i < 3; i++) {
            // 写入带<strong>标签的目标内容
            out_file << "<strong>" << vehicle[i] << "</strong>" << endl;
        }
        out_file.close();
    }
    return 0;
}

方式二:循环内以追加模式打开文件

如果必须在循环内打开文件,使用ios::app追加模式,每次写入都会添加到文件末尾:

#include <fstream>
#include <string>
using namespace std;

int main() {
    string vehicle[3] = { "car", "bike", "plane" };
    
    for (int i = 0; i < 3; i++) {
        // 以追加模式打开文件,避免清空原有内容
        ofstream out_file("C:\\Users\\Gadr\\Desktop\\test.txt", ios::app);
        
        if (out_file.is_open()) {
            out_file << "<strong>" << vehicle[i] << "</strong>" << endl;
            out_file.close();
        }
    }
    return 0;
}
额外注意点
  • 文件路径中的反斜杠必须用双反斜杠\\转义,或者直接使用正斜杠/,否则会因转义字符导致路径识别失败。
  • 建议添加is_open()判断,确保文件成功打开后再执行写入操作,避免因权限或路径错误导致无输出。

内容的提问来源于stack exchange,提问作者urbanc cladr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:40:44