Mam problem z przypisaniem kolejnym obiektom w tablicy ich właściwości.
Zadanie brzmi: Wczytaj z pliku tsv (dane oddzielone spacjami, kolejne osoby oddzielone '\n' i podane dokładnie tak jak jest w programie) dane i wypisz je (późniejsza wersja - do pliku rtf, stąd te komentarze).
Zadanie zrobiłem bez problemu nie posługując się obiektami, ale chyba czas wziąć się za coś nowego i spróbować obiektowo, więc proszę o pomoc - czemu nie wyświetla mi danych osób?
main.cpp:
#include<iostream>
#include<fstream>
#include<string>
#include"header.h"
int main()
{
int i,personNumber;
Tperson *personTable; ///tworzę tablicę osób, jeszcze nie znając jej wielkości ;)
std::string token;
std::ifstream fileFrom;
//std::ofstream fileTo;
personNumber = 0; ///na początku nie masz osób
fileFrom.open("base.tsv");
//fileTo.open("buisnessCard.rtf");
//-------------------------- Błędy wczytania plików --------------------------
if (fileFrom.good() == false)
{
std::cout << "Plik do odczytu nie istnieje!";
exit(0);
}
//if (fileTo.good() == false)
//{
// std::cout << "Plik do zapisu nie istnieje!";
// exit(0);
//}
//-------------------------- Początek programu --------------------------
while (!fileFrom.eof()) ///ustalam liczbę osób
{
getline(fileFrom, token, '\n');
personNumber++;
}
personNumber--; ///żeby ostatnia osoba była zczytana, to zawsze na końcu jest pusta linia
personTable = (Tperson*)calloc(personNumber, sizeof(Tperson)); ///tworzę tablicę osób
i = 0; ///zaczynam wczytywać osoby, więc i=0 i while i<personNumber
while ( (!fileFrom.eof()) && i<personNumber) ///przypisuję obiektom typu osoba ich właściwości
{
getline(fileFrom, personTable[i].name, '\t');
getline(fileFrom, personTable[i].surname, '\t');
getline(fileFrom, personTable[i].gender, '\t');
getline(fileFrom, personTable[i].position, '\t');
getline(fileFrom, personTable[i].adress, '\t');
getline(fileFrom, personTable[i].telephones, '\n');
i++;
}
//fileTo << "{\rtf1\ansii\deff0 {\fonttbl {f0\Times New Roman;}} {\fonttbl {f1\Arial;}}";
for (i = 0; i < personNumber; i++)
{
personTable[i].showPerson();
}
//fileTo << "}";
//-------------------------- Koniec programu --------------------------
free(personTable);
fileFrom.close();
//fileTo.close();
getchar();
return 0;
}
header.h:
#include<iostream>
#include<string>
class Tperson
{
public:
std::string name;
std::string surname;
std::string gender;
std::string position;
std::string adress;
std::string telephones;
void showPerson()
{
std::cout << "---------" << std::endl;
std::cout << "Name: " << name << std::endl;
std::cout << "Surname: " << surname << std::endl;
std::cout << "Gender: " << gender << std::endl;
std::cout << "Position: " << position << std::endl;
std::cout << "Adress: " << adress << std::endl;
std::cout << "Telephones: " << std::endl;
std::cout << telephones << std::endl;
}
};