Ustawianie wskaźnika w pliku

0

Zrobiłem tak

ifstream fl("quizy.txt");
    fl.seekg(7, ios_base::beg);

    if(fl.is_open())
    {
        int nr_linii = 1;
        string linia;
        int licznik = 0;

        while(getline(fl, linia))
        {
            switch(nr_linii)
            {
            case 1:
                {
                    tematy[licznik] = linia;
                    licznik++;
                }
            }

            if(nr_linii == 6)
            {
                nr_linii = 0;
            }
            ++nr_linii;
        }
    }

    fl.close();
    fl.clear();

ale ten kod ustawia wskaźnik tylko dla pierwszego obiegu pętli i nie wiem w którym miejscu mam wstawić seekg, aby działało także dla kolejnych.

0

Masz go wstawić w tym miejscu w którym chcesz aby wskaźnik pliku się przesunął.
Teraz robisz to tylko raz po otwarciu,

0

Mam taki kod, niby powinien działać, ale wyświetla tylko pierwszy temat, a w miejscu gdzie powinien być drugi to nic nie ma.

ifstream fl("quizy.txt");

    if(fl.is_open())
    {
        int nr_linii = 1;
        string linia;
        int licznik = 0;
        
        fl.seekg(7, ios_base::beg);
    
        while(getline(fl, linia))
        {
            switch(nr_linii)
            {
            case 1:
                {
                    tematy[licznik] = linia;
                    licznik++;
                }
            }

            if(nr_linii == 6)
            {
                nr_linii = 0;
            }
            nr_linii++;
            
            fl.seekg(7, ios_base::cur);
        }
    }

    fl.close();
    fl.clear(); 
0

Możesz podać format pliku z wyróżnieniem co chcesz wpisać w te tematy?

0

Nie wiem o co chodzi plik z wyróżnieniem. Robię quiz i chcę zrobić listę tematów tych quizów.
W notatniku to wygląda tak:

np.

Temat: Informatyka

Chcę, aby czytało dopiero od siódmego znaku samą nazwę tematu. Może masz inny algorytm na to?

0

Generalnie wystarczy tyle:

for(ifstream fl("quizy.txt");getline(fl,linia);) if((line.size()>=6)&&(linia[5]==':')&&(linia.substr(0,5)=="Temat")) tematy[licznik++]=linia.substr(7);

Może tylko to wystarczy:

for(ifstream fl("quizy.txt");getline(fl,linia);) if((line.size()>=6)&&(linia[5]==':')) tematy[licznik++]=linia.substr(7);

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