Ошибка записи в файл(текст не сохраняется)
У меня есть файл в котором содержатся названия книг с авторами и я из их общего количества выбираю только какие то определенные и записываю их в другой файл, но они не записываются почему-то. В чем может быть проблема?
#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();
};