Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[cpp] - Zapisanie obiektow do pliku *.txt

14 Jun 2015 20:31 582 7
  • Level 12  
    Witam, robię program na zaliczenie a'la elektroniczny dziennik. Tworze tam między innymi obiekt typu Nauczyciel i umieszczam go w wektorze.

    Code: c
    Log in, to see the code



    I tu pytanie, w jaki sposób mógłbym ten wektor zapisać do pliku i go otwierać? Czytałem troszeczkę o bibliotece fstream lecz ze bardzo nie wiem jak się za to zabrać. Prosiłbym o pomoc. Pozdrawiam ;)
  • Level 25  
    karl9955 wrote:
    Czytałem troszeczkę o bibliotece fstream lecz ze bardzo nie wiem jak się za to zabrać. Prosiłbym o pomoc. Pozdrawiam ;)
    Chcesz powiedzieć że nie było tam przykładu jak zapisać dane do pliku. To sprawdź to.
  • Level 42  
    Ogólnie - robisz deparsowanie danych i zapisujesz... W ujęciu obiektowym jest to bardzo fajne, bo na obiekcie wystarczy stworzyć metodę, której przekażesz tylko strumień, a ona pobierze swoje pola (wszystkie / wybrane) i zapisze do strumienia. W głównej obsłudze otwierasz ten strumień (może nim być plik) i wywołujesz metodę dla kolejnych obiektów, na końcu zapisujesz/zamykasz strumień.
  • Level 12  
    Wszystko ok tylko dalej nie rozumiem w jaki sposób to działa. Czy jeżeli przekieruje strumień z wektora na plik to czy to wystarczy, czy muszę do pliku wysłać dane typu: wektor o nazwie.. , rozmiar wynosi.., posiada takie i takie obiekty... itp.
  • Level 32  
    karl9955 wrote:
    Czytałem troszeczkę o bibliotece fstream lecz ze bardzo nie wiem jak się za to zabrać.
    Chrzani Waść!

    Nie licząc otwarcia/zamknięcia jest to identycznie z konsolą.
    Code: c
    Log in, to see the code
  • Level 12  
    Dzięki za odpowiedź, czy Twój zapis typu:
    Code: c
    Log in, to see the code


    Jest równoznaczny z tym:
    Code: c
    Log in, to see the code


    I ponawiam pytanie, bo Ty w tym przykładzie użyłeś 2 zmiennych typu string i int, a jeżeli ja mam wektor, jest on wypełniony obiektami to wystarczy że zrobię coś w tym stylu:

    Code: c
    Log in, to see the code


    Jeszcze przy okazji, jest jakiś sposób żeby funkcja getch działała pod Ubuntu?
  • Level 25  
    karl9955 wrote:
    Jeszcze przy okazji, jest jakiś sposób żeby funkcja getch działała pod Ubuntu?
    Tak wystarczy użyć mocy i pierwszy link da odpowiedź.
  • Level 32  
    karl9955 wrote:
    Code: c
    Log in, to see the code
    - ten fragment to produkt od kogoś kto nie zna biblioteki standardowej.
    • Po kiego najpierw tworzyć obiekt po tym go otwierać, kiedy można to zrobić od razu? Nawet jeżeli w pętli otwierasz/zamykasz pliki to i tak na każdy warto zrobić osobną zmienną aby nie mieć problemów z clear().
    • Czytanie i pisanie jednocześnie do tego samego pliku? Kiedy i gdzie to może być potrzebne? Owszem są takie sytuacje ale raczej marginalne.
    W związku z powyższym, używaj ifstream oraz ofstream, nigdy fstream, no przynajmniej dopóki nie zrozumiesz jak to działa.

    Co do wektora, skąd program ma się domyślić jak to chcesz załatwić?
    Ale możesz załatwić to poprzez:
    http://www.cplusplus.com/reference/iterator/ostream_iterator/ - zapis
    http://www.cplusplus.com/reference/iterator/istream_iterator/ - odczyt (można też użyć copy mimo że nie ma w przykładzie ale razem z http://www.cplusplus.com/reference/iterator/back_inserter/ )

    Postanowiłem jednak machnąć przykład:
    Code: c
    Log in, to see the code