Заменить строку в текстовом файле - PullRequest
6 голосов
/ 29 февраля 2012

Я хочу заменить строку текста в файле, но я не знаю функций для этого.

У меня есть это:

ofstream outfile("text.txt");
ifstream infile("text.txt");

infile >> replace whit other text;

Есть ответы на это?

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

Пример

infile.add(text, line); 

Есть ли в C ++ функции для этого?

Ответы [ 3 ]

8 голосов
/ 29 февраля 2012

Боюсь, вам, вероятно, придется переписать весь файл. Вот как вы могли бы это сделать:

#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-файл:

ONE
TWO
THREE
HELLO
SEVEN

Output-файл:

ONE
TWO
THREE
GOODBYE
SEVEN

Просто раскомментируйте закомментированные строки, если вы хотите, чтобы они заменили первое вхождение. Также я забыл, в конце добавить код, который удаляет filein.txt и переименовывает fileout.txt в filein.txt.

3 голосов
/ 29 февраля 2012

Единственный способ заменить текст в файле или добавить строки в середине файла - переписать весь файл с точки первой модификации.Вы не можете «освободить место» в середине файла для новых строк.

надежный способ сделать это - скопировать содержимое файла в новый файл, внося изменения по мереперейдите, а затем используйте rename, чтобы перезаписать старый файл новым.

3 голосов
/ 29 февраля 2012

Вам нужно найти для правильной строки / символа / позиции в файле, а затем - записать . Нет функции поиска и замены как таковой (о которой я знаю).

...