Я пытаюсь создать класс для чтения текста, где я читаю данные, которые мне нужны, в векторе, а затем получаю эти данные в другом классе для вектора там.
Я пробовал тот же метод в чистом файле, он работал нормально, я мог прочитать файл, и мои объекты получили каждый элемент из каждой строки из текстового файла.
Но так как я пытался сделать это в ООП, я просто не могу прочитать файл, я поместил операторы cout
в цикл do..while
, затем он выполнялся только один раз, конечно только из-за do
,
Этот код хорошо работает в одном файле cpp:
void TxtReader::read(std::vector<Contacts> &contacts){
std::string firstName;
std::string lastName;
std::string phoneNumber;
std::string birthPlace;
std::string birthDate;
std::string Profession;
std::ifstream savedContacts("ContactList.txt");
Contacts newContact = Contacts();
do {
std::getline(savedContacts, firstName, ';');
std::getline(savedContacts, lastName, ';');
std::getline(savedContacts, phoneNumber, ';');
std::getline(savedContacts, birthPlace, ';');
std::getline(savedContacts, birthDate, ';');
std::getline(savedContacts, Profession, ';');
newContact.setFirstname(firstName);
newContact.setLastname(lastName);
newContact.setPhonenumber(phoneNumber);
newContact.setBirthplace(birthPlace);
newContact.setBirthdate(birthDate);
newContact.setProfession(Profession);
contacts.push_back(newContact);
} while (std::getline(savedContacts, firstName));
}
И вот как я хочу его использовать:
void ContactDir::getList() {
// contacts vector is a private member in the header file
textReader.read(contacts);
}
Как только я вызываю это в main.cpp
, цикл while
в нем перестает работать, возможно, он не может прочитать файл, поскольку он выполняется только один раз, а мой файл состоит из нескольких строк:
//any other function in the contactdir class works
ContactDir contacts = ContactDir();
contacts.getlist();
Текстовый файл внутри:
Walter;Greyson;03069990643;London;1991.11.16;Engineer;
Carl;Johnson;03069990120;Manchester;1996.10.10;Teacher;
Aaron;Ramsey;03069995103;Birmingham;1969.03.05;Unemployed;