Как изменить определённую строку и записать новое значение в txt?

Для изменения определенной строки и записи нового значения в текстовый файл в C++ вам понадобится выполнить следующие шаги:

1. Открыть файл.
Сначала вам нужно открыть файл с помощью класса std::ifstream или std::ofstream. Если вы хотите только читать файл, используйте std::ifstream, а если вы планируете записывать данные, используйте std::ofstream. Если вам нужно читать и записывать данные, используйте std::fstream. Например, чтобы открыть файл для записи, вы можете использовать следующий код:

std::ofstream file("example.txt");

2. Прочитать данные из файла.
Чтобы изменить определенную строку, вам сначала необходимо прочитать данные из файла. Для этого вы можете использовать цикл while и оператор извлечения getline, чтобы прочитать все строки из файла и сохранить их в векторе или другой структуре данных:

std::vector<std::string> lines;
std::string line;
while (std::getline(file, line)) {
    lines.push_back(line);
}

3. Изменить нужную строку.
Теперь, когда у вас есть все строки из файла, вы можете изменить нужную строку. Предположим, что вам нужно изменить строку с индексом index. Вы можете просто присвоить новое значение соответствующему элементу вектора строк:

lines[index] = "Новое значение";

4. Записать изменения в файл.
После изменения строки вам нужно записать обновленные данные обратно в файл. Для этого вы можете использовать класс std::ofstream и цикл for:

std::ofstream outfile("example.txt");
for (const auto& line : lines) {
    outfile << line << std::endl;
}

5. Закрыть файл.
Не забудьте закрыть файл, когда закончите работу с ним, используя метод close:

file.close();

Вот полный пример кода для изменения определенной строки и записи нового значения в текстовый файл:

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

int main() {
    std::vector<std::string> lines;
    std::string line;
   
    std::ifstream file("example.txt");
    if (!file) {
        std::cerr << "Ошибка открытия файла." << std::endl;
        return -1;
    }

    while (std::getline(file, line)) {
        lines.push_back(line);
    }

    file.close();

    int index = 2;  // Индекс изменяемой строки.
    if (index >= 0 && index < lines.size()) {
        lines[index] = "Новое значение";
    } else {
        std::cerr << "Ошибка: недопустимый индекс строки." << std::endl;
        return -1;
    }

    std::ofstream outfile("example.txt");
    if (!outfile) {
        std::cerr << "Ошибка открытия файла для записи." << std::endl;
        return -1;
    }

    for (const auto& l : lines) {
        outfile << l << std::endl;
    }

    outfile.close();

    return 0;
}

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