• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wczytywanie danych z pliku tekstowego

Object Storage Arubacloud
0 głosów
935 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez marekl91 Początkujący (380 p.)
Witam,

Mam taki problem - chciałbym żeby w moim programie była możliwość wczytywania danych z pliku tekstowego do tablicy obiektów.  Tak, żeby po wczytaniu zostały utworzone obiekty danej klasy z przypisanymi wartościami atrybutów, które mam w pliku tekstowym.   W skrócie chodzi o to, aby użytkownik mógł zapisać swoją pracę, a później wczytać dane do programu.

Oto mój kod:

Plik main.cpp:   http://wklej.org/id/1931349/

Plik Klasy.h    http://wklej.org/id/1931350/

Plik. metody.cpp   http://wklej.org/id/1931351/

Zatrzymałem się przy funkcji void load() w plik main.cpp - ta funkcja ma wczytywać dane z pliku i tworzyć obiekty  z przypisanymi wartościami atrybutów tak jak w pliku tekstowym.

Będe wdzięczny za pomoc, bo nie bardzo wiem jak ugryźć ten temat, a w sieci nie mogę znaleźć konkretnych informacji.  

PS: Czy jest możliwość aby po otworzeniu programu dane ładowały się automatycznie?

3 odpowiedzi

0 głosów
odpowiedź 7 lutego 2016 przez marekl91 Początkujący (380 p.)
wybrane 8 lutego 2016 przez marekl91
 
Najlepsza
OK, zapomnijmy o tym kodzie, który wstawiłem.

W skrócie: Jak odczytać dane z pliku tekstowego i przypisać wartości poszczególnych linii w pliku tekstowym do atrybutów obiektu?
komentarz 7 lutego 2016 przez mbabane Szeryf (79,280 p.)
jesli wiesz jak zapisuje sie dane do atrybutow obiektow i wiesz jak sie odczytuje/zapisuje dane z pliku tekstowego do zmiennych w programie to powinienes w sumie juz to wiedziec.

Poszukaj tutorialu na temat obslugi plikow a wszystko powinno Ci sie samo wyjasnic, zrob prosty programik, ktory bedzie pobieral pojedyncza liczbe z pliku tekstowego do zmiennej.
komentarz 7 lutego 2016 przez marekl91 Początkujący (380 p.)
Wiem, już jak pobrać pojedynczą liczbę z pliku tekstowego do zmiennej.  Mam problem z tym, żeby pobrać wszystkie linie z pliku tekstowego i zapisywał je do zmiennych obiektu.   Przerobiłem już ten film https://www.youtube.com/watch?v=h2Taf16gQDI&list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo&index=8

Niestety Pan Mirek także mi nie pomógł.  Dodam, że używam w moim programie tablicy obiektów klasy ze wskaźnikiem.
komentarz 7 lutego 2016 przez mbabane Szeryf (79,280 p.)

uzyles w swoim kodzie takiego czegos:
 while(!plik.eof())
    {
    
    }

    
Ta petla przejdzie przez caly plik od gory do dolu.

Dane w pliku zapisywales: kazdy atrybut obiektu w osobnej linii. Wiec teraz musisz odpowiednio przypisywac odczytane linie do jakiegos obiektu. Niepotrzebnie tez zapisujesz do pliku takie cos jak "gatunek:", itd. zrob tak jak to robi pan Mirosław tj. zapisuj same dane, bedzie je latwiej odczytywac. Mozna takze robic dwa pliki zeby bylo latwiej wczytywac tj. osobny dla kotow, osobny dla psow.

Zaluzmy ze zapisuje dane w takiej kolejnosci:
owczarek
rex
5
czarny
bernardyn
betowen
3
bialo-brazowy

W pliku zapisane sa dwa egzemplarze psow. Teraz tak, linie od owczarek do czarny to jeden obiekt, nastepny obiekt bedzie od bernardyn do bialo-brazowy. czyli co 4 odczytane linie bedzie kolejny egzemplarz psa. 

Najprosciej mozna to zrobic tak:

while (!plik.eof)
{
    odczyt_linii();
    egz_psa[i] -> rasa = odczytana_linia;

    odczyt_linii();
    egz_psa[i] -> imie = odczytana_linia;
    
    odczyt_linii();
    egz_psa[i] -> wiek = atoi( odczytania_linia.c_str() );
    
    odczyt_linii();
    egz_psa[i] -> kolor = odczytana_linia;

    //nastepna linia nalezy do kolejnego egzemplarza psa lub ewentualnie nastapi koniec pliku.
    i++;
}

 

Wroc takze jeszcze raz do tego filmiki od minuty 9:20.
Zobacz takze to: https://www.youtube.com/watch?v=w2BQUXf91ZA&list=PLOYHgt8dIdozvOVheSRb_qPVU-4ZJA7uB&index=2

komentarz 7 lutego 2016 przez marekl91 Początkujący (380 p.)
a co oznaczają te funkcje odczyt_linii();   ?
komentarz 7 lutego 2016 przez mbabane Szeryf (79,280 p.)

o jeny, to taki pseudo kod, nie chce Ci dac gotowego rozwiazania tylko swego rodzaju algorytm, chce zebys sam cos popracowal, ogladales film Mirosława, wiec wywnioskowalem ze się domyślisz, chodzi mi o funkcje getline();

komentarz 8 lutego 2016 przez marekl91 Początkujący (380 p.)
Ok, użyłem funkcji getline ale pojawia się problem taki, że wczytuje mi tylko jedną linię a pozostałych nie wczytuje. Czy powinienem zatem użyć  switcha żeby wczytać pozostałe linie?
komentarz 8 lutego 2016 przez mbabane Szeryf (79,280 p.)
pokaz kod ktorym to robisz
komentarz 8 lutego 2016 przez marekl91 Początkujący (380 p.)
Już sobie z tym poradziłem, Wielkie dzięki za pomoc!

Cholernie proste, to jest, ale się dopiero uczę, a początki bywają trudne.

wszystko się ładnie wczytało, gra i buczy,

jeszcze raz dzięki :)
0 głosów
odpowiedź 7 lutego 2016 przez niezalogowany

Czy jest możliwość aby po otworzeniu programu dane ładowały się automatycznie?

Tak. Na resztę pytań ciężko mi odpowiedzieć, jest takie powiedzenie "Less is more", dałeś za dużo kodu i wątpię aby komuś chciało się go dokładnie analiować aby odpowiedzieć na twoje pytanie: http://rtfm.killfile.pl/

0 głosów
odpowiedź 7 lutego 2016 przez mustarrrd Obywatel (1,450 p.)

Do prostych zastosowań, opisanych przez Ciebie (zapisywanie i odczytywanie danych z pliku tekstowego) wystarczy chociażby taka biblioteka http://rudeserver.com/config/usage.html. Niemniej jednak w przyszłości polecam zainteresować się tematyką plików XML.

Być może nie jest to odpowiedź jakiej oczekiwałeś, ale -  jak już wspomniano - za dużo dałeś tego kodu i raczej nikomu nie będzie się chciało go analizować.

Podobne pytania

0 głosów
3 odpowiedzi 1,013 wizyt
0 głosów
1 odpowiedź 389 wizyt
0 głosów
1 odpowiedź 2,857 wizyt

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,004 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...