[C++] Przepisywanie z pliku tektowego

kamilall234
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 2 lis 2008, o 10:39
Płeć: Mężczyzna
Lokalizacja: dsa
Podziękował: 1 raz

[C++] Przepisywanie z pliku tektowego

Post autor: kamilall234 »

Witam. Mam problem z programem który przepisuje z pliku tekstowego dane do tablicy typu strukturowego, ale najpierw musi rozpoznać do której części ma wpisać. Plik tekstowe wygląda mniej więcej tak:

Kod: Zaznacz cały

marka
Skoda
rok
2010
red
212
blue
210
rok
2002
marka
Mercedes
blue
892
red
156
blue
198
marka
audi
rok
2008
red
212
Chodzi o to, że tylko co druga dana ma być wpisana do tablicy. Tzn (marka,rok,red,blue) to tylko takie indeksy i wpisujemy to co jest pod nimi do tablicy. Czyli 4 pierwsze indeksy dotyczą jednego samochodu. I napisałem taki program, ktory do końca nie działa ok. Bo przepisuje tylko 1 i 3 nazwę samochodu i rok a reszta jest w postaci (32568430) taki przykład. Coś jest nie tak proszę o pokazanie błedu, bo bez tego nie mogę dalej ruszyć.


Kod: Zaznacz cały

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstring>
using namespace std;

struct Skolor{
int red,blue;};

struct Sauto{
string marka;
int rok;
Skolor kolor;};


int main()
{
    string pomoc;
    Sauto tab[3];
    ifstream odczyt;
    odczyt.open("baza.txt");
    if(odczyt.good())
    {

        for(int i=0;i<3;i++)
        {
            for(int k=0;k<4;k++)
            {
                getline(odczyt,pomoc);

                if(pomoc=="marka")
                {
                    odczyt>>tab[i].marka;
                }
                if(pomoc=="rok")
                {
                    odczyt>>tab[i].rok;
                }
                if(pomoc=="red")
                {
                    odczyt>>tab[i].kolor.red;
                }
                if(pomoc=="blue")
                {
                    odczyt>>tab[i].kolor.blue;
                }

            }
        }


    }
    odczyt.close();

    for(int i=0;i<3;i++)
    {
        cout<<tab[i].marka<<endl;
        cout<<tab[i].rok<<endl;
        cout<<tab[i].kolor.red<<endl;
        cout<<tab[i].kolor.blue<<endl;
        cout<<endl;
    }





    return 0;
}
codersship
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 30 gru 2011, o 16:48
Płeć: Mężczyzna
Lokalizacja: net

[C++] Przepisywanie z pliku tektowego

Post autor: codersship »

Zastosuj jedna konwencje wczytywania z pliku...
1. wczytuj ze strumienia:
zamień linijkę "getline(odczyt,pomoc);" na odczyt>>pomoc
lub
2.wczytuj pod koniec pętli linijkę którą przypisałeś strumieniem:
czyli dopisujesz "getline(odczyt,pomoc);"
tuż przed zamknięciem pętli for.
ODPOWIEDZ