У меня есть два аналогичных метода, которые одинаково открывают файл, но обрабатывают их и возвращают значения немного по-разному, но пока первый метод делает это успешно, второй метод, который вызывается после первого, завершается неудачей.
Я пытался изменить путь к этому файлу, его расширение, но я думаю, что мне не хватает некоторых важных знаний о ifstream.
vector<User> Database::createUserDatabase()
{
vector<User> users;
ifstream inputFile;
inputFile.open(pathToFile, ios::in);
//Some file processing
inputFile.close();
return users;
}
И это прекрасно работает, в то время как
vector<User> Database::createBookDatabase()
{
vector<Book> books;
ifstream inputFile;
inputFile.open(pathToFile, ios::in);
//Some file processing
inputFile.close();
return books;
}
не завершается всякий раз, когда я проверяю, был ли файл открыт или не используется
inputFile.is_open()
Эти функции определены в файлах классов Database.cpp, User.cpp, Book.cpp, которые правильно связаны сmain.cpp со следующим содержимым:
#include <iostream>
#include <cstdlib>
#include <string>
#include <cstring>
#include <sstream>
#include <vector>
#include <fstream>
#include "../lib/Book.h"
#include "../lib/User.h"
#include "../lib/Database.h"
using namespace std;
int main()
{
Database userDatabase("../database/users.txt", "users");
Database bookDatabase("../database/lmsdb.txt", "books");
vector<User> users = userDatabase.createUserDatabase();
vector<Book> books = bookDatabase.createBookDatabase();
return 0;
}
Вот мои Каталоги проектов
Используя отладчик gdb, я подтвердил, что файл вообще не открывается,Я предполагаю, что я не закрыл файлы должным образом, но я еще немного знаю C ++ (изучал его всего неделю или около того).
Будем рады узнать, что вы можете предложить для чтения / исследования,все же я действительно хотел бы видеть прямое решение этой проблемы.