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

C++实现:根据用户输入的首词删除TXT文件中的指定行

解决TXT文件首词匹配删除行的问题

我来帮你修正这段C++代码,让它实现根据输入的首词删除对应整行的功能。原代码主要有两个问题:一是第一次读取文件后指针已经到末尾,第二个循环读不到内容;二是直接整行对比,没有实现首词匹配逻辑。

问题分析

  • 原代码第一次while(getline(citanjeLinija, linija))把文件内容全部读完后,文件流的指针停在了文件末尾,第二个循环无法再读取任何内容。
  • 直接用linija != izbrisiLiniju做整行对比,不符合“输入首词就删除整行”的需求。

修改后的完整代码

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    string izbrisiLiniju;
    string linija;
    ifstream citanjeLinija("auti.txt");
    ofstream brisanjeLinija("temp.txt");

    if (!citanjeLiniju.is_open() || !brisanjeLinija.is_open()) {
        cerr << "无法打开文件!" << endl;
        return 1;
    }

    // 先输出文件内容
    cout << "Ispis autiju" << endl;
    while (getline(citanjeLinija, linija)) {
        cout << linija << endl;
    }

    // 将文件指针重置到文件开头,以便重新读取
    citanjeLinija.clear(); // 清除EOF标志
    citanjeLinija.seekg(0, ios::beg);

    // 获取用户输入的首词
    cout << "\nUnesite vrstu automobila za izbrisati: " << endl;
    getline(cin, izbrisiLiniju);

    // 重新读取文件,匹配首词并写入临时文件
    while (getline(citanjeLinija, linija)) {
        // 提取当前行的首词
        stringstream ss(linija);
        string prvaRijec;
        ss >> prvaRijec; // 自动以空格为分隔符提取第一个单词

        // 如果首词不匹配,就写入临时文件
        if (prvaRijec != izbrisiLiniju) {
            brisanjeLinija << linija << '\n';
        }
    }

    // 关闭文件流
    citanjeLinija.close();
    brisanjeLinija.close();

    // 替换原文件(删除原文件,将临时文件重命名为原文件名)
    remove("auti.txt");
    rename("temp.txt", "auti.txt");

    cout << "Linija je uspješno izbrisana!" << endl;
    return 0;
}

关键修改点说明

  • 重置文件指针:读完文件内容后,用citanjeLinija.clear()清除EOF状态,再用seekg(0, ios::beg)把指针移回文件开头,这样第二个循环才能重新读取内容。
  • 首词提取:用stringstream拆分每行内容,ss >> prvaRijec会自动跳过开头的空白字符,提取第一个以空格分隔的单词,完美匹配需求。
  • 文件替换:处理完后用remove和rename把临时文件替换成原文件,完成最终的删除操作。
  • 错误处理:增加了文件打开失败的判断,避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:14:08