change/add letter in text file c++
-
wrote on 1 Dec 2022, 10:21 last edited by
hi,
I`m working with text file,
and I want to read a text file line by line,
and if line start with # I want to write before it *
for example I have this file:
hello
world
#house
tree
I want it to be:
hello
world
*#house
tree
and if it easier I dont mind to do :
*house
or instead all the line to do that:
hello
world
*
tree
Do you know how to do it?
thank:) -
hi,
I`m working with text file,
and I want to read a text file line by line,
and if line start with # I want to write before it *
for example I have this file:
hello
world
#house
tree
I want it to be:
hello
world
*#house
tree
and if it easier I dont mind to do :
*house
or instead all the line to do that:
hello
world
*
tree
Do you know how to do it?
thank:)@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one.
-
hi,
I`m working with text file,
and I want to read a text file line by line,
and if line start with # I want to write before it *
for example I have this file:
hello
world
#house
tree
I want it to be:
hello
world
*#house
tree
and if it easier I dont mind to do :
*house
or instead all the line to do that:
hello
world
*
tree
Do you know how to do it?
thank:)Lifetime Qt Championwrote on 1 Dec 2022, 10:24 last edited by jsulm 12 Jan 2022, 10:24@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Yes.
But you forgot to tell what exactly is not clear.
To read line from a file: https://doc.qt.io/qt-6/qiodevice.html#readLine-1
To check whether a string starts with a specific char there is: https://doc.qt.io/qt-6/qstring.html#startsWith-3 -
@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Yes.
But you forgot to tell what exactly is not clear.
To read line from a file: https://doc.qt.io/qt-6/qiodevice.html#readLine-1
To check whether a string starts with a specific char there is: https://doc.qt.io/qt-6/qstring.html#startsWith-3 -
@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one.
wrote on 1 Dec 2022, 10:30 last edited by@Christian-Ehrlicher said in change/add letter in text file c++:
@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one.
this is the only way??
there are not a way to write to the file? -
@Christian-Ehrlicher said in change/add letter in text file c++:
@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one.
this is the only way??
there are not a way to write to the file?@RuWex said in change/add letter in text file c++:
there are not a way to write to the file?
You can also write to a file as we told you.
-
@Christian-Ehrlicher said in change/add letter in text file c++:
@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one.
this is the only way??
there are not a way to write to the file?@RuWex said in change/add letter in text file c++:
there are not a way to write to the file?
You can't insert into a file! You can only overwrite what is inside or append at the end of the file. That's why @Christian-Ehrlicher suggested to write the output to a new file and when you're done delete the old file and rename the new so it has the name of the original file.
-
@Christian-Ehrlicher said in change/add letter in text file c++:
@RuWex said in change/add letter in text file c++:
Do you know how to do it?
Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one.
this is the only way??
there are not a way to write to the file?wrote on 1 Dec 2022, 10:39 last edited by JonB 12 Jan 2022, 10:40@RuWex said in change/add letter in text file c++:
there are not a way to write to the file?
In a word, you cannot write back to the same file as you are reading from at the same time, it would mess up the data you are reading.
-
@RuWex said in change/add letter in text file c++:
there are not a way to write to the file?
In a word, you cannot write back to the same file as you are reading from at the same time, it would mess up the data you are reading.
wrote on 1 Dec 2022, 10:44 last edited by@JonB
that is the point!!
I have a function that i am reading the file and something and every line i send to another function in order to check if it begins with # (the function get the line and pointer)
and then I want that the function will continue with the fixes file
its really important for me -
@JonB
that is the point!!
I have a function that i am reading the file and something and every line i send to another function in order to check if it begins with # (the function get the line and pointer)
and then I want that the function will continue with the fixes file
its really important for me@RuWex said in change/add letter in text file c++:
and then I want that the function will continue with the fixes file
Don't know what this mean, but did you actually read what @Christian-Ehrlicher wrote?
-
@JonB
that is the point!!
I have a function that i am reading the file and something and every line i send to another function in order to check if it begins with # (the function get the line and pointer)
and then I want that the function will continue with the fixes file
its really important for mewrote on 1 Dec 2022, 10:46 last edited by JonB 12 Jan 2022, 10:47@RuWex said in change/add letter in text file c++:
its really important for me
What is the relevance of this? We have told you what you need to do and that you cannot write back to the text file while reading from it. Just because something else might be "important" to you does not mean it can be done or you can ignore how things work/don't work!
-
@RuWex said in change/add letter in text file c++:
and then I want that the function will continue with the fixes file
Don't know what this mean, but did you actually read what @Christian-Ehrlicher wrote?
-
@RuWex This is what @Christian-Ehrlicher wrote:
"Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one."
Did you read it?!
It was already explained in this thread that you CAN'T read AND write into the same file in a meaningful way. And it was also explained to you that you need to write to a temporary file first and rename it if done. Did you read that? -
@RuWex said in change/add letter in text file c++:
but there are not a easier and nicer way?
If the file is not too big you can keep the lines you read in memory until you're done with reading the file and modifying its content. Then write all this lines at once into the old file (after closing and reopening it for writing).
-
@RuWex This is what @Christian-Ehrlicher wrote:
"Read the file line by line and write the modified version out into a new file. Then close and remove the old file and rename the new one."
Did you read it?!
It was already explained in this thread that you CAN'T read AND write into the same file in a meaningful way. And it was also explained to you that you need to write to a temporary file first and rename it if done. Did you read that? -
wrote on 1 Dec 2022, 10:50 last edited by
@RuWex
If your file is small you could read it all into memory (splitting into lines for an array), make your changes in memory, and then overwrite the original file in one go. That would avoid the need for two files. But it does not alter the fact that you cannot write to/overwrite the file until you have finished reading from it completely.... -
@RuWex
If your file is small you could read it all into memory (splitting into lines for an array), make your changes in memory, and then overwrite the original file in one go. That would avoid the need for two files. But it does not alter the fact that you cannot write to/overwrite the file until you have finished reading from it completely.... -
@JonB but I can do it in te middle that the
readfile()- read a text fule and send to the changetextfile() function each line
so can I do it every time I found # IN CHANGETEXTFILE?@RuWex You need to write ALL lines back to the file, not only lines you changed...
-
@JonB but I can do it in te middle that the
readfile()- read a text fule and send to the changetextfile() function each line
so can I do it every time I found # IN CHANGETEXTFILE?wrote on 1 Dec 2022, 10:54 last edited by JonB 12 Jan 2022, 10:57@RuWex
I think we have all tried to answer as best we can.You cannot update a text file "in place" or "as you go" or "only certain lines". You have to do the whole text file, from beginning to end. You can do that either by using a second file for writing as you read or by doing the work on an in-memory copy of the file and then writing it back.
1/26