Потоковый ввод-вывод в файл

Может кто помочь осуществить потоковый ввод-вывод этого кода?(нужно оооочень срочно)

#include <string.h>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{  
    struct library
    {
        char author[30];
        char book[30];
        int year;
    } p[5];

    int i, j;
    char author[30];
    int n = sizeof(p) / sizeof(library);

    for (i = 0; i < n; ++i)
    {
        cout << " Vvedi avtora ";
        gets_s(p[i].author);
        cout << " Vvedi knigu ";
        gets_s(p[i].book);
        cout << " Vvedi god ";
        cin >> p[i].year;
        cin.ignore();
    }

    cout << " Vvedi imya avtora ";
    gets_s(author);

    for (i = 0, j = 0; i < n; ++i)
    {
        if (strcmp(p[i].author, author) != 0)
        {
            p[j] = p[i];
            ++j;
        }
    }
    n = j;

    for (i = 0; i < n; ++i)
        cout << p[i].author << " \t" << p[i].book << "\t"<< p[i].year<<"\n";
    system("pause");
}

Наделал чего-то такого, но это такая каша

#include <iostream>
#include <fstream>
using namespace std;
#define LINES 100 // максимальное количество строк в файле
#include <conio.h>
int main()
{
        struct library
        {
            char author[30];
            char book[30];
            int year;
        } p[5];
        char line[LINES][100];
        char s[] = "|                              |                |                              |";
        int i, j;
        char author[30];
        int n = sizeof(p) / sizeof(library);

        for (i = 0; i < n; ++i)
        {
            cout << " Vvedi avtora ";
            gets_s(p[i].author);
            for (int i = 0; p[i].author != '\0'; i++) // копируем в строку без 0
                s[i + 2] = p[i].author[i];

            cout << " Vvedi knigu ";
            gets_s(p[i].book);
            for (int i = 0; p[i].book != '\0'; i++)
                s[i + 33] = p[i].book[i];

            cout << " Vvedi god ";
            cin >> p[i].year;
           
            s[i + 50] = p[i].year;
            cin.ignore();
        }

        cout << " Vvedi imya avtora ";
        gets_s(author);

        for (i = 0, j = 0; i < n; ++i)
        {
            if (strcmp(p[i].author, author) != 0)
            {
                p[j] = p[i];
                ++j;
            }
        }
        n = j;

    fstream inOut;
    inOut.open("file.txt", ios::in); // открываем файл для ввода
    // Считываем из файла имеющиеся данные
    int count = 0;
    while (inOut.getline(line[count], 100)) count++;
    inOut.close(); // закрываем файл

    inOut.open("file.txt", ios::out); // открываем файл для вывода
    inOut << "--------------------------------------------------------------------------------" << endl;
    inOut << "|        Автор          |          Книга          |             Год            |" << endl;
    inOut << "--------------------------------------------------------------------------------" << endl;
    inOut << s << endl; // выводим сформированную строку
    inOut << "--------------------------------------------------------------------------------" << endl;
    // Выводим обратно в файл все строки кроме "шапки" (первые 3 строки)
    for (int j = 3; j < count; j++)
    {
        inOut << line[j] << endl;
    }
    inOut.close();
    //cin.get();
    system("pause");
    return 0;
}

а еще здесь беда

О чем именно речь? cin/cout это тоже потоковый ввод/вывод )

Надо в файл записывать?
Краткий туториал и примеры: http://www.cplusplus.com/doc/tutorial/files/

Так не надо код бездумно копипастить, year это не массив/строка, а число, что такое i-й элемент числа и зачем он нужен?)

я уже понял) просто очень спешу, не успеваю все обдумать

Да, в файл

А что можно сделать, если:
!=: нет преобразования “int” в “char [30]” (24 и 29 строки)

например http://www.cplusplus.com/reference/string/to_string/