我想替换文件中的一行文本,但我不知道它的功能。
我有这个:
ofstream outfile("text.txt");
ifstream infile("text.txt");
infile >> replace whit other text;
对此有何答案?
我想说,在文件的某些行中添加文字......
示例
infile.add(text, line);
C ++是否具有此功能?
答案 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)
答案 2 :(得分:3)
替换文件中的文本或在文件中间添加行的唯一方法是从第一次修改时重写整个文件。你不能在文件中间为新行“腾出空间”。
可靠的方法是将文件的内容复制到新文件中,随时进行修改,然后使用rename
用新文件覆盖旧文件之一。