替换文本文件中的一行

时间:2012-02-29 19:04:54

标签: c++ stream ifstream

我想替换文件中的一行文本,但我不知道它的功能。

我有这个:

ofstream outfile("text.txt");
ifstream infile("text.txt");

infile >> replace whit other text;

对此有何答案?

我想说,在文件的某些行中添加文字......

示例

infile.add(text, line); 

C ++是否具有此功能?

3 个答案:

答案 0 :(得分:8)

我担心你可能不得不重写整个文件。您可以这样做:

#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。

答案 1 :(得分:3)

您需要seek到文件中正确的行/字符/位置,然后超过write。没有任何功能可以搜索和替换(我知道)。

答案 2 :(得分:3)

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

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