I want to replace a line of text in a file, but I don't know a functions to do this.
I have this:
ofstream outfile("text.txt");
ifstream infile("text.txt");
infile >> replace with other text;
Any answers for this?
I miss to say, for add text in Some line in the file...
Example
infile.add(text, line);
Does C++ have functions for this?
I'm afraid you'll probably have to rewrite the entire file. Here is how you could do it:
#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;
}
Input-file:
ONE
TWO
THREE
HELLO
SEVEN
Output-file:
ONE
TWO
THREE
GOODBYE
SEVEN
Just uncomment the commented lines if you only want it to replace the first occurance. Also, I forgot, in the end add code that deletes filein.txt and renames fileout.txt to filein.txt.
You need to seek to the correct line/char/position in the file and then over-write. There is no function to search and replace as such (that I know of).
The only way to replace text in a file, or add lines in the middle of a file, is to rewrite the entire file from the point of the first modification. You cannot "make space" in the middle of a file for new lines.
The reliable way to do this is to copy the file's contents to a new file, making the modifications as you go, and then use rename
to overwrite the old file with the new one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With