首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >c++如何删除/替换文件的最后一行?

c++如何删除/替换文件的最后一行?
EN

Stack Overflow用户
提问于 2021-06-20 15:30:33
回答 2查看 146关注 0票数 0

如何在C++中删除/替换文件的最后一行?我研究了这些问题:Deleting specific line from fileRead and remove first (or last) line from txt file without copying 。我想过迭代到文件的末尾,然后替换最后一行,但我不确定该怎么做。

EN

回答 2

Stack Overflow用户

发布于 2021-06-20 15:38:03

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <fstream>
#include <string>
using namespace std;

int main() {
    ifstream fin("input.txt");
    ofstream fout("output.txt");

    
    while (!fin.eof()) {
        string buffer;
        getline(fin, buffer);
        
        if (fin.eof()) {
            fout << "text to replace last line";
        } else {
            fout << buffer << '\n';
        }
    }

    fin.close();
    fout.close();
}

您还可以读取和存储所有输入文件,修改并写入它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <fstream>
#include <vector>
#include <string>
using namespace std;

int main() {
    // read
    ifstream fin("input.txt");
    vector<string> lines;
    
    while (!fin.eof()) {
        string buffer;
        getline(fin, buffer);
        lines.push_back(buffer + '\n');
    }
    fin.close();

    // modify
    lines[lines.size() - 1] = "text to replace last line";

    // write
    ofstream fout("output.txt");
    for (string line: lines) { // c++11 syntax
        fout << line;
    }
    fout.close();
}
票数 0
EN

Stack Overflow用户

发布于 2021-06-20 15:53:26

查找文件内容中最后一次出现'\n‘的位置。如果文件以'\n‘结尾,即在最后一个'\n’之后没有更多的数据,那么找到'\n‘之前出现的位置。使用resize_file截断找到位置处的文件,或仅替换找到位置之后的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68057397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文