c++. Odczyt z pliku do tablicy struktor

0

Mam takąs strukture

struct notebook
{
   char nazwa;
   int cena;
   };
 

Mam plik w którym są dane dotyczace notebooków. Może ich być 2 możę 40. Jak mam policzyć ilość danych w pliku?w sensie
np. mam plik pl1.txt z taką zawartością:

Toshiba 2122
Gp 442

i teraz jak mam policzyć ilość tych notebooków aby stworzyć dynamiczną tablice 1 wymiarową która będzie zawierała dane dotyczące tych notebooków pobrane z tego pliku. Mam to zrobić na funkcjach.

Mam jeszcze taki problem. Mam takąfunkcje:

 void czytaj_z_pliku(ifstream &plik, int tab[][])
{for(int i=0;i<n;i++)
  {for(int j=0;j<m;j++)
   plik>>tab[i][j]

ale jak próbuje coś zrobić to wyskakuje że nie ma czegoś takiego jak ifstream. Biblioteke dodałem.

Jak zrobić funkcje otwierająca dany plik do odczytu, bądz apisu i żeby ta funkcja Od razu sprawdzała czy sie dało otworzyć?
Mam coś takiego:

void otworz_do_odczytu(ifstream &plik, const char nazwa_pliku [])
{
plik.open(nazwa_pliku, ios_base :: in);
if(!plik.is_open())
   {cerr<<"blad otwarcia"<<endl;
   exit(1);}
}
 

ale mam ten sam błąd żę kombpilator nie wie co to jest ifstream...

0

ifstream siedzi w std::. Do odczytywania przyda się stringstream, wczytujesz całą linię i potem z niego wyciągasz nazwę i cenę - i tak do końca pliku.

0
MenosGrandes napisał(a):
struct notebook
{
   char nazwa;
   int cena;
   };
 

...

Toshiba 2122
Gp 442 

Taki plik do takiej struktury nie pasuje, ponieważ char to jeden znak, a ty potrzebujesz ciągu znaków.
więc jedno z:
char nazwa[20]; // maksymalna długość + 1
char *nazwa; // tu zabawa w dynamiczne przydzielenie
string nazwa;

Wczytywać z pliku nie możesz od tak całą strukturę (no chyba że przeciążysz operator >>), trzeba wczytywać po kolei każdą składową.

0

Właśni mi chodzi o dynamiczne przydzielanie. Bo nie wiem czy w pliku będzie 1000 notebooków czy 2.
Wiec jak mam je wczytywać?

0

albo najpierw zapisujesz ilosc rekordow, a pozniej same rekordy albo zapisujesz same struktury i wczytujesz do innej struktury danych np.: listy

0

a mógłbyś podać jaiś przykład.. bo dopiero zaczynam z strukturami.... i nie za bardzo rozumiem.

0

Ale czego nie rozumiesz? Zapisu informacji do struktury?

0

Jak mam wpisać z pliku do struktuy. Nie wiem jak policzyć ilosć tych elementów z pliku. żeby utworzyć tablice dynamiczną.. żeby pomieściła wszyskie dane.

0

Zakładamy, że jeden rekord jest w jednej linii? Jeżeli tak, to wystarczy policzyć linijki jeżeli przewiduje się, że plik jest poprawny.

0

To jak policzyć linijki? włąsnie o to mi cały czas choidzi...

0

Liczenie linijek:

for(IleWierszy=-1;plik;++IleWierszy) plik.ignore(INT_MAX,'\n');

Dla pustego wyjdzie 0.
-1 wyjdzie tylko jeżeli plik nawet się nie otworzył.

0

a mogłbyś mi to pokazać na pliku pl2.txt? ja dopiero dzisiaj miałem z tego wykład.. wiec nioe za bardzo sie orientuje..

0

To przeczytaj podstawy najpierw C++ i dopiero spróbuj, to tak jakby tłumaczyć początkującemu snajperowi jak złożyć karabin, ale on go jeszcze rozłożyć nie umie.

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