如何使用fstream删除文本文件中的特定行

时间:2014-08-01 09:11:57

标签: c++ fstream

美好的一天!我的问题是我应该删除文本文件中的整个特定行。但相反,我只是用空格替换它。实际上,我不知道如何删除该行。这是我的代码:

fstream fs("FoodList.txt");
//charPos here is the position in file where I should begin deleting.
fs.seekp(charPos);
//I loop 100 times because I am sure that each row is 100 characters.
for (int i = 0; i < 100; i++)
{
    //What I really want to do is to delete the whole row
    fs << " ";
}

我的文本文件如下所示: 之前:

apple
banana
carrot
cherry

之后(如果我选择charPos = 3):

apple
banana
cherry

顺便说一下,我已经在我可以编辑特定行的更新部分。任何帮助将不胜感激! :)

2 个答案:

答案 0 :(得分:4)

最简单的方法是读入文件,写出临时文件,排除选定的行并将临时文件移动到原始文件。

答案 1 :(得分:0)

我不知道这样做是不是很糟糕,但我找到了一种简单的方法。

    while(!fs.eof())
    {
        fs << '\0';
    }

此代码将删除您在文件中的位置后的整个文本。

顺便说一句:fs.eof()告诉你是否在流的末尾

设置您的位置,您可以使用:

fs.seekp(streampos pos);

如果你只想删除你在下一个空格之间的文字,Tabstop或输入你只需使用循环中显示的单行,但我想你知道(:

我希望这会对你有所帮助