Witam ponownie :)
mam takie pytanie: przechowuję dużą liczbę danych w pliku CSV. Dane podzielone są od kilku do kilkudziesięciu zmiennych. Każda zmienna jest w innej kolumnie w pliku (zwykła tabela, gdzie kolumny to n-zmienna a wiersze to i-zestaw w próbie).
Obecnie napisałem taki kod do wydobycia tych danych:
double**zmienne = new double*[ilosc_danych];
for(i=0; i<ilosc_danych; i++)
zmienne[i] = new double[ilosc_zmiennych];
string nazwa_pliku = "nazwa_pliku.csv";
ifstream out(nazwa_pliku.c_str());
if(!out)
cout << "nie można otworzyć pliku" << endl;
else
{
i=0;
char znak; //do wrzucania separatora
while(out >> zmienne[i][0] >> znak >> zmienne[i][1] >> znak >> zmienne[i][2] >> znak >> zmienne[i][3] >> znak >> zmienne[i][4])
{
i++;
}
lub alternatywna wersja dla większej liczby zmiennych:
while(out)
{
for(j=0; j<liczba_zmiennych-1;j++)
out >> zmienne[i][j] >> znak;
out >> zmienne[i][4];
i++;
}
}
Kod działa póki co prawidłowo!
Mam jednak pewne obawy, gdyż w pliku docelowo ma być przechowywane kilkaset tysięcy danych - typu double. Moje obawy dot. przede wszystkim konwersji stringu/char-ów tych liczb z pliku na typ double -> czy przy większej ilości zmiennych nie ma tu większego niebezpieczeństwa, że coś się skopie i program źle odczyta ciąg znaków z pliku i zapisze mi jakieś śmieci do tablicy lub w ogóle się rozłoży?
Co w ogóle powiecie o tym kodzie? Jak go oceniacie? czy można go jakoś usprawnić - głównie odnośnie bezpieczeństwa wydobywania danych -> by przez przypadek nie zapisać do tablicy jakiś śmieci, które wszystko mi popsują w dalszym działaniu programu...
Przykładowo, jak w pliku między liczbami dam dwa przecinki to program do tego miejsca mi ładnie kopiuje dane a później nic nie robi :( -> ale nie zamyka się tylko po prostu przestaje kopiować dane... Więc nie wiem nawet, że coś się kopło :/
Pozdrawiam i z góry dziękuję wszystkim za pomoc!