Функция двойного копирования файла

Есть функция, которая на вход принимает путь до файла.

Её цель: Создать файл с таким же названием, но с окончанием _double.txt. Далее функция должна 2 раза скопировать всё содержимое из 1-ого файла во 2-ой файл соответственно.

К примеру: На вход подаём файл text.txt с содержимым hello. После выполнения функции, должен создаться файл text_double.txt с содержимым hello (и на новой строчке ещё) hello;

void double_copy(string p) {
    string p2 = p;
    ifstream f1(p);
    for (int i = p.size(), c = 5; c != 0; --i, --c) {
        p2.erase(i);
    }
    p2 += "_double.txt";
    ofstream f2(p2);
    string str;
    while (getline(f1, str)) {
        f2 << str << endl;
    }
}

Ответы (1 шт):

Автор решения: lakvak

Нужно было просто начать чтение файла сначала.

void double_copy(string p) {
    string p2 = p;
    ifstream f1(p);
    for (int i = p.size(), c = 5; c != 0; --i, --c) {
        p2.erase(i);
    }
    p2 += "_double.txt";
    ofstream f2(p2, ios::app);
    string str;
    while (getline(f1, str)) {
        f2 << str << endl;
    }
    f1.clear();
    f1.seekg(0);
    while (getline(f1, str)) {
        f2 << str << endl;
    }
    f1.close();
    f2.close();
}
→ Ссылка