首页 > 解决方案 > 从 .txt 文件中删除特定行 (C++)

问题描述

我正在尝试扫描 .txt 文件的内容,以便将其与用户的 int 输入进行比较,并在找到匹配值后,将其写入要删除的行。该文件不只有数值。例如文件包含的内容:“hello world 505”“hello world 506”等。

到目前为止,我的代码能够进行比较(行的长度不同),但我不知道如何将文件指针移动到找到所述值的行。有帮助吗?

void comparisoniD2 (int a) {

    int x[ countLinesOf() ];

    ifstream readFile;
    readFile.open("ClientList.txt");
    string str;
    for (int i = 0; i< countLinesOf();i++){
        while (getline(readFile, str)) {
            reverseStr2(str);
            str.erase(3);
            reverseStr2(str);
            stringstream geek(str);
            geek >> x[i];
            if( x[i]==a ){
                cout<<a<<" is equal to "<<x[i]<<endl;
                break;
            }
        }
    }

    readFile.close();
}

标签: c++delete-file

解决方案


如果您想在同一个文件中执行此操作,则有点困难。

例如,您可以打开同一个文件两次:读取字符串和保存字符串。您的循环将是:读取字符串,保存字符串(如果它不包含合适的数字)。

另一个麻烦是将文件剪切到较小的大小。您可以使用 boost::filesystem 或本机 api。


推荐阅读