Witam
Mam problem z zadaniem.
Muszę utworzyć tablicę (wielkości: ilości linijek) wskaźników na strukturę wynik. Początkowa wartość wskaźników ma równać się nullptr. A następnie trzeba wczytać wyniki z pliku z wynikami do tablicy. Pamięć mam alokować w miarę dodawania nowych elementów.
Zrobiłem coś takiego:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct wynik
{
string nick;
int score;
};
bool createExampleFile(const string & name)
{
ofstream o(name);
if (!o.is_open())
return false;
o << "tomek 12\ntomek 534\nja 21\nccc 323\nsuper_gracz 888\nja 123\nja 20\nja 323\nja 24\nja 23\nja 10\ntomek 54\ntomek 24\nja 13\nsuper_gracz 88\nsuper_gracz 778\nsuper_gracz 999\nja 44";
o.close();
return true;
}
int main()
{
//0
const int initSize = 5;
string file_name = "wyniki.txt";
createExampleFile("C:\\Users\\user\\Desktop\\" + file_name);
fstream plik("C:\\Users\\user\\Desktop\\" + file_name, ios_base::in);
if (!plik.is_open())
{
cout << "Blad otwarcia pliku";
exit(1);
}
string nazwa;
int liczba;
int i = 0;
string linia;
int n = 0;
while (getline(plik, linia)) n++; //liczy linijki
wynik * tab3 = new wynik [n]{};
while (plik >> nazwa>> liczba)
{
tab3[i] = new wynik; // <------------- problem
tab3[i].nick = nazwa;
tab3[i].score = liczba;
i++;
}
for (int j = 0; j < n; j++)
{
cout << tab3[j].nick << " " << tab3[j].score << endl;
}
delete[] tab3;
plik.close();
return 0;
}
Widzę że debugger zaznacza mi błąd 52 linijce kodu, ale nie mam pojęcia jak zrobić żeby każda tablica tworzyła nową strukturę.
Help