Редактирование текстового файла

Я хочу редактировать текстовый файл, но я застрял в поиске правильных функций или методов для этого.
Пока что я могу открыть текстовый файл и найти определенный Стинг, но я понятия не имею, как перемещать курсор, добавлять или заменять информацию, шаги 4 — 7 в моем псевдокоде, показанном ниже.

Можете ли вы дать некоторые рекомендации? Какие функции я должен использовать (если они уже существуют)?
Также будет полезен пример «простого» кода.

Pseudocode:

1. Open file.
2. While not eof
3.    Read file until string "someString" is found.
4.    Position the cursor at the next line (to where the someString was found).
5.    If "someString" = A go to step 6. Else go to step 7.
6.       Replace the information in whole line with "newString". Go to step 8.
7.       Add new information "newString_2", without deleting the existing.
8. Save and close the text file.

Благодарю.

1

Решение

Я бы порекомендовал поместить команду getline в цикл while, потому что тогда он не остановится только из-за EOF, но когда getline больше не может читать.
Вроде когда ошибка bad происходит (что происходит, когда кто-то удалил файл, пока ваша программа его читала).

Кажется, что вы хотите искать внутри строки, так что «find» может быть весьма полезным.

#include <iostream>
#include <fstream>
#include <string>

int main (){
std::fstream yourfile;
std::string line, someString;

yourfile.open("file.txt", ios::in | ios::app);  //The path to your file goes here

if (yourfile.is_open()){  //You don't have to ask if the file is open but it's more secure
while (getline(line)){
if(line.find(someString) != string::npos){ //the find() documentation might be helpful if you don't understand
if(someString == "A"){
//code for replacing the line
}
else{
yourfile << "newString_2" << endl;
}
} //end if
} //end while
} //end if
else cerr << "Your file couldn't be opened";

yourfile.close();
return 0;
}

Я не могу сказать вам, как заменить одну строку в текстовом файле, но я надеюсь, что вы сможете работать с тем небольшим, что я могу вам дать.

2

Другие решения

Это должно быть хорошим началом:

// basic file operations
#include <string>
#include <fstream>

int main ()
{
std::fstream myfile;
std::string line;

while (!myfile.eof())
{
std::getline(myfile,line); // Check getline() doc, you can retrieve a line before/after a given string etc.
//if (line == something)
//{
// do stuff with line, like checking for content etc.
//}
}
myfile.close();
return 0;
}

Больше информации Вот

1

По вопросам рекламы [email protected]