Ошибка записи в файл(текст не сохраняется)

У меня есть файл в котором содержатся названия книг с авторами и я из их общего количества выбираю только какие то определенные и записываю их в другой файл, но они не записываются почему-то. В чем может быть проблема?

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include "BoolShelf.h"
#include "Book.h"
#include <fstream>
using namespace std;

istream& operator >> (std::istream& is, vector<Book> & v)
{
    is >> v;
    return is;
}

ostream& operator << (ostream& os, vector<Book> & v)
{
        os << v;
        os << '\n';
    return os;
}

void BookShelf::LoadBook()
{
    string tmp;
    int y = 0; 
    int p = 0;
    ifstream f2("book.txt");
    if (f2.is_open())
    {
        while (!f2.eof())
        {
            getline(f2, tmp);
            Book b(tmp, y, p);
            books.push_back(b);
        }
    }
    f2.close();
}

int BookShelf::Selectbyname()
{
    vector<Book>::iterator it = books.begin();
    string name;
    cout << "Введите слово, по которому будет идти поиск книг" << endl;
    cin >> name;
    int year = 0;
    int page = 0;
    Book b(name, year, page);
    ofstream f1("book1.txt");
    if (f1)
    {
        for (it = books.begin(); it!= books.end(); it++)
        {
            Book b = *it;;
            if (name == b.name)
                f1 << b.name << " " << b.year << " " << b.page << "\n";
        }
    }
    f1.close();

    return 0;
}

int BookShelf::Selectbyyear()
{
    vector<Book>::iterator it = books.begin();
    string name;
    int year;
    cout << "Введите год, по которому будет идти поиск книг" << endl;
    cin >> year;
    int page = 0;
    Book b(name, year, page);
    ofstream f1("book1.txt");
    if (f1)
    {
        for (it = books.begin(); it != books.end(); it++)
        {
            Book b = *it;

            if (year == b.year)
                f1 << b.name << " " << b.year << " " << b.page << "\n";
        }
    }
    f1.close();
    return 0;
}

int BookShelf::Selectbypage()
{
    vector<Book>::iterator it = books.begin();
    string name;
    int year = 0;
    int page;
    cout << "Введите количество страниц, по которому будет идти поиск книг" << endl;
    cin >> page;

    Book b(name, year, page);

    ofstream f1("book1.txt");
    if (f1)
    {
        for (it = books.begin(); it != books.end(); it++)
        {
            Book b = *it;

            if (page == b.page)
                f1 << b.name << " " << b.year << " " << b.page << "\n";
        }
    }
    f1.close();
    return 0;
}
#pragma once

#include <iostream>
#include <vector>
#include "Book.h"
#include <string>

class BookShelf
{
    std::vector<Book> books;
public:
    void LoadBook();
    int Selectbyname();
    int Selectbyyear();
    int Selectbypage();
};

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