Удалить число, заданное с клавиатуры

Подскажите, пожалуйста, как реализовать ввод числа с клавиатуры и его удаление в файле Если есть повтор числа, то нужно оставить первое его вхождение, а остальное удалить. Если повтора нет, то просто удалить это число например в файле записано 1 4 5 1 1 2 3 , на выходе должно быть 1 4 5 2 3 Вот мой код, но я не пойму как связать вводимое число и его удаление из файла

#include <iostream>
#include <fstream>
#include <list>
#include <Windows.h>
using namespace std;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    //cout << "Введите число, которое хотите удалить: ";
   // int x;
    //cin >> x;
    int d;
    list<int> l{};
    fstream f;
    f.open("input.txt", ios::in);
    if (!f.is_open()) 
    {
        cerr << "failed to open input file.";
        return 1;
    }

    while (f >> d) 
    {
        l.push_back(d);
    }
    f.close();

    l.sort();
    l.unique();

    f.open("output.txt", ios::out);
    if (!f.is_open()) 
    {
        cerr << "failed to open output file.";
        return 1;
    }

    for (auto elem : l) 
    {
        f << elem << " ";
    }
    f.close();


    return 0;
}

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

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

Например, так :)

int main()
{
    cout << "Введите число, которое хотите удалить: ";
    int x, c = 0;
    cin >> x;

    ifstream f("input.txt");
    ofstream g("output.txt");
    for(int k; f >> k; ) if (k == x) c++; else g << k << " ";
    if (c > 1) g << x;
}

Выводим все числа, кроме интересующего, а его — просто считаем. Ну а потом смотрим, выводить его или нет...

→ Ссылка