Złożona struktura pliku, wczytanie danych

0

Witam
Otóż mam dosyć nietypową strukturę pliku - a może i typową.

3
student
6
(id,Number,1)
(Name,Varchar,0)
(Age,Number,0)
(Salary,Currency,0)
(BirthTime,Time,0)
(BirthDate,Date,0)
3
11,abc,25,25.45,01:12:13 AM,02/01/1988  
12,bcd,29,18.45,13:48:03,13-4-2001
13,def,32,23.928,7:8:9 PM,27.11.1999

No i chciałbym to jakoś zgrabnie wczytać do struktury, dodam, że oprócz tych pół które są teraz widoczne mogę występować też inne, ktoś coś poradzi? Nie oczekuję gotowego kodu, tylko jakiejś podpowiedzi.
Pozdrawiam

Jak na razie nie napisałem za wiele, w sumie nic

void loadFromFile(std::vector <s> &v, std::string file){
    std::fstream f;
    f.open(file.c_str(), std::ios::in);

    for(auto i: s){

    }

    f.close();
}
0

Zacznij od sensownej struktury danych reprezentujących to co masz w pliku.

0

No to też w sumie mam, chodzi mi głównie o pomysł na wczytanie tego...

struct student{
    int id;
    int wiek;
    int czesne;

    std::string nawisko;
    std::string adrres;
    std::string kurs;
    std::string temat;
    std::string profesja;

    time_t datetime;
    student();
};
0

Nie, ponieważ: -

Złoty Pomidor napisał(a):

... dodam, że oprócz tych pół które są teraz widoczne mogę występować też inne ...

0

Będę tylko te pola które są w strukturze - tylko nie koniecznie wszystkie

2

Jak dla mnie taki plik jest nieczytelny i narażony na błędy przy wczytywaniu. Minimum to nagłówki z opisem/znacznikiem, co jest w danym polu w pliku, a dobrze by było jeszcze jakaś możliwość sprawdzania poprawności danych. Jak nie masz pomysłu, użyj któregoś z popularnych sposobu zapisu danych: albo tekstowych xml, ini itp, albo binarnych, np iff.

0

ten plik będzie właśnie taki... sprawdza to sprawdzarka na stronie internetowej, więc ja nie mogę w niego ingerować

0

A może dać jakieś flagi które będą po prostu sprawdzały co będzie w tych danych poniżej - wszystkie możliwe opcje i jak trafi np. będzie, że jest data urodzenia to zmienię ją na 1

0

ktoś coś?

0

te dane jednak są dowolne - to nie musi być wcale student... więc to jeszcze bardziej utrudnia sprawe

0

Czy masz wpływ na format plku ?

0

Jak nie podasz pełnej treści zadania to raczej nikt ci nie pomoże.

0

No to podaję... Więc muszę stworzyć bazę CZEGOŚ - nie koniecznie studentów, na drzewie b+ wykonywać takie operacje jak usuń / wstaw / etc. Musi być to zrobione w C++ albo w Python, na dole podaje format plików we/wy, ja mam jakieś tam pojęcie o programowaniu - coś tam wiem, tylko po prostu jestem zszokowany tym plikiem - nie wiem jak go ugryźć.

#number of tables Table1_name #number of attributes in the Table1_name attribute1_name,attribute2_name,attribute3_name,attribute4_name, ... $ #number of tuples in Table1_name val1,val2,val3,val4, ... $ val1,val2,val3,val4, ... $ val1,val2,val3,val4, ... $ . . . . . . val1, val2, val3, val4, ... $ $ --- end table data Table2_name #number of attributes in the Table2_name attribute1_name,attribute2_name,attribute3_name,attribute4_name, ... $ #number of tuples in Table2_name val1,val2,val3,val4, ... $
val1,val2,val3,val4, ... $ val1,val2,val3,val4, ... $ . . . . . . val1, val2, val3, val4, ... $ $ . . . . . . $# ---end file
Output File Format: #number of attributes in the result attribute1_name,attribute2_name,attribute3_name,attribute4_name, ... $ #number of tuples in result val1,val2,val3,val4, ... $ val1,val2,val3,val4, ... $ val1,val2,val3,val4, ... $ . . . val1, val2, val3, val4, ... $ $ --- end table data
0

eh z pdf tak się skopiowało

#number of tables
Table1_name
#number of attributes in the Table1_name
attribute1_name,attribute2_name,attribute3_name,attribute4_name, ... $
#number of tuples in Table1_name
val1,val2,val3,val4, ... $
val1,val2,val3,val4, ... $
val1,val2,val3,val4, ... $
. . . . . . 
val1, val2, val3, val4, ... $
$ --- end table data Table2_name
#number of attributes in the Table2_name
attribute1_name,attribute2_name,attribute3_name,attribute4_name, ... $
#number of tuples in Table2_name
val1,val2,val3,val4, ... $
val1,val2,val3,val4, ... $
val1,val2,val3,val4, ... $ .
 .
 . 
. .
 .
 val1, val2, val3, val4, ... $ 
$ . . . . . . $# ---end file
0

Więc jak zamierzasz wczytać

Złoty Pomidor napisał(a):

... bazę CZEGOŚ - nie koniecznie studentów ...
do http://4programmers.net/Forum/1222669 ?

Więc raz jeszcze: http://4programmers.net/Forum/1222668

Przy maksymalnym uproszczeniu:

enum fieldType={ftString,ftInt,ftDouble,...};
class field
  {
   string name;
   fieldType ft;
   ...
   bool isGood(const string &str);
   static fieldType byName(const string &typeName);
  };

class table
  {
   string name;
   vector<field> fields;
   unordered_map<string,size_t> fieldNames;
   ...
  };

class fieldData
  {
   field &fd; // nie wiem czy słusznie
   string data;
   ...
  };

class record
  {
   table &tb; // nie wiem czy słusznie
   vector<fieldData> row;
  };

class dataset
  {
   table &tb;
   vector<record> data;
   ...
  };

owszem da się zrobić znacznie bardziej elegancko ale nie ma co bo i tak nie zrozumiesz (jak na razie).

1 użytkowników online, w tym zalogowanych: 0, gości: 1