Вывести отрицательные числа из бинарного файла с++

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

#include <iostream>
#include <fstream>
#include <string> 
#include <windows.h>
using namespace std;

int main()
{
    setlocale(LC_ALL, "RUS");
    int i, n, d;
    cout << "Введите количество чисел - ";
    cin >> n;
    ofstream F("F.txt");
    for (i = 0; i < n; i++)
    {
        cout << "Число №" << i+1 << ": ";
        cin >> d;
        F << d << '\t';
    }
    F.close();
    ofstream Fbo("F.dat", ios::binary);
    Fbo.write((char*)&d, sizeof(int));
    Fbo.close();
    ifstream Fbi("F.dat", ios::binary);
    int db = 0;
    while (Fbi.read((char*)&db, sizeof(int)))
    {
        if (db < 0)
            cout << db << '\t';
    }
    Fbi.close();
    system("pause");
    return 0;
}

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

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

Вместо

ofstream F("F.txt");
for (i = 0; i < n; i++)
{
    cout << "Число №" << i+1 << ": ";
    cin >> d;
    F << d << '\t';
}
F.close();
ofstream Fbo("F.dat", ios::binary);
Fbo.write((char*)&d, sizeof(int));
Fbo.close();

напишите

ofstream F("F.txt");
ofstream Fbo("F.dat", ios::binary);
for (i = 0; i < n; i++)
{
    cout << "Число №" << i+1 << ": ";
    cin >> d;
    F << d << '\t';
    Fbo.write((char*)&d, sizeof(int));
}
F.close();
Fbo.close();
→ Ссылка