0
点赞
收藏
分享

微信扫一扫

c++删除txt文件中指定行

书呆鱼 2022-05-03 阅读 100

1、问题描述

比如需要删除t.txt文件中第一列等于6的行。
在这里插入图片描述

2、代码

思路:首先将所有行放到string数组中,然后将第一列信息放到vector中。清空原文件,将除了指定编号的行都放到原文件中。

vector<string> split(string s,char c){
    vector<string> re;
    for(int i = 0; i < s.size(); i++){
        string t="";
        while(i<s.size()&&s[i]!=c){
            t+=s[i];
            i++;
        }
        re.push_back(t);
    }
    return re;
}

void delete_line(int id){
    string G[1000];

    int k = 0;
    char buffer[256];
    fstream out;
    out.open(p,ios::in);
    while(!out.eof())
    {
        out.getline(buffer,256,'\n');//getline(char *,int,char) 表示该行字符达到256个或遇到换行就结束
        G[k++] = buffer;
    }
    out.close();


    vector<string> re[1000];

    for(int i = 0; i < k; i++){
        re[i] = split(G[i],' ');
    }

    string ID = to_string(id);
    //清空原文件
    ofstream clear;
    clear.open(p,ios::out);
    clear.close();

    for(int i = 0; i < k; i++){
        if(ID == re[i][0]){
            continue;
        }else{
            ofstream file;
            file.open(p,ios::app);
            file <<G[i].data() << endl;
            file.close();
        }
    }
}
举报

相关推荐

0 条评论