Как редактировать конкретную строку в текстовом файле? - PullRequest
0 голосов
/ 24 сентября 2019

Как мне отредактировать конкретную строку в текстовом файле?И как мне избежать перезаписи вопроса.(Как сохранить запись, которую я добавил ранее, вместо того, чтобы заменить их новыми записями?)

Я попытался использовать line.replace, но там написано «Нет соответствующей функции-члена для вызова для замены».

else if(choice == 4){

//            count++;

    string edit;
    string newdate;
    double newincome;
    double newoutcome;
    double EditTodayBalance = 0;
    string emptySpace = "         ";
//            string sentence;

    cout << " There are " << count << " record(s) in the file " <<     endl;
    cout << " Please enter the date to edit " << endl;
    cin >> edit;



    size_t pos;
    ifstream Record("BankRecord.txt");
    if (Record.is_open()) {
        while (getline(Record, line)) {
            pos = line.find(edit);
            if (pos != string::npos) // string::npos is returned if 
string is not found
                {
                    cout << line << endl;

                    cout << " Enter what you want to replace " << endl;

                    cout << " Please enter the new date you want to put " << endl;
                    cin >> newdate;
                    cout << " Please enter the new income you want to put " << endl;
                    cin >> newincome;
                    cout << " Please enter the new outcome you want to put " << endl;
                    cin >> newoutcome;

                    cout << "            Your new Record is                 " << endl;
                    cout << count << emptySpace << newdate << emptySpace << newincome << emptySpace << newoutcome << endl;


                    //line.replace()
            }
        }
    }
    EditTodayBalance = newincome - newoutcome;
    cout << " Today's balance is " << EditTodayBalance << endl;

    cout << " Please reenter your choice " << endl;
    cin >> choice;
}

Я ожидаю, если старая строка будет "1 2/2/2019 32 21", и я введу новую строку как "1 2/3/2019 22 11".Затем, когда я открою файл, запись будет новой.

1 Ответ

0 голосов
/ 24 сентября 2019

Боюсь, вам придется переписать весь файл.Читайте содержимое файла построчно, сохраняйте его в памяти (возможно, вектор строк).Теперь отредактируйте указанную строку в этом векторе.Когда операция завершится, выведите все содержимое вектора в другой файл.Позже вы можете заменить оригинальный файл.

...