替换文本文件中的一行

Replace a line in text file

本文关键字:一行 文本 文件 替换      更新时间:2023-10-16

我想替换文件中的一行文本,但我不知道有什么函数可以做到这一点。

我有这个:

ofstream outfile("text.txt");
ifstream infile("text.txt");
infile >> replace with other text;

对此有什么答案吗?

我想说的是,在文件的某行添加文本。。。

示例

infile.add(text, line); 

C++有这个函数吗?

恐怕您可能需要重写整个文件。以下是您可以做到的方法:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    string strReplace = "HELLO";
    string strNew = "GOODBYE";
    ifstream filein("filein.txt"); //File to read from
    ofstream fileout("fileout.txt"); //Temporary file
    if(!filein || !fileout)
    {
        cout << "Error opening files!" << endl;
        return 1;
    }
    string strTemp;
    //bool found = false;
    while(filein >> strTemp)
    {
        if(strTemp == strReplace){
            strTemp = strNew;
            //found = true;
        }
        strTemp += "n";
        fileout << strTemp;
        //if(found) break;
    }
    return 0;
}

输入文件:

ONE
TWO
THREE
HELLO
SEVEN

输出文件:

ONE
TWO
THREE
GOODBYE
SEVEN

如果只想替换第一次出现的内容,只需取消注释注释行即可。此外,我忘记了,最后添加了删除filein.txt并将fileout.txt重命名为filein.txt的代码。

您需要查找文件中正确的行/char/位置,然后重写。没有这样的搜索和替换功能(据我所知)。

替换文件中的文本或在文件中间添加行的唯一方法是从第一次修改开始重写整个文件。不能在文件中间为新行"腾出空间"。

可靠的方法是将文件的内容复制到新文件中,边修改边修改,然后使用rename用新文件覆盖旧文件。