Witam wszystkich,
Mam problem z pobraniem z pliku macierzy w języku c++. liczby dowolne, również ujemne. Problem polega na tym, że pobieram stringi liniami, a muszę je przekonwertować na typ double. Tak chciałbym by wyglądała struktura pliku:
X:X:X:X
X:X:X:X
X:X:X:X
X:X:X:X
Przy czym macierz z założenia jest kwadratowa, X - dowolne liczby, także ujemne. Rozmiar dowolny(ja liczę linie, to wystarczy, bo macierz jest kwadratowa z zalozenia).
Chciałbym dane z pliku wpisać do tablicy dwuwymiarowej kwadratowej typ double. Będę bardzo wdzięczny za pomoc.
Oto fragment kodu: (nieschludny, bo przerabiałem go wielokrotnie, więc proszę nie krytykować)
PS. czytałem, że można użyć atof();
string buffor;
int linie = 0;
ifstream in;
in.open("temp.txt");
if(!in.is_open())
{
int a=MessageBox(HWND_DESKTOP,"Sprawdz, czy plik o podanej nazwie istnieje.","Blad otwarcia pliku!",MB_OKCANCEL);
exit(1);
}
while (!in.eof())
{
getline(in, buffor);
linie++;
}
string tab1[linie];
in.clear(in.rdstate() & ~(ios::failbit | ios::eofbit));
in.seekg(0, ios_base::beg );
for (int i=0; i<linie; i++)
{
getline(in, tab1[i]);
}
for (int i=0; i<linie; i++)
{
cout << tab1[i] << endl;
}
double tab2[linie][linie];
for(int i=0; i<linie; i++)
{
int k=0;
for(int j=0; j<(2*linie-1); j++)
{
if(tab1[i][j]!=':')
{
tab2[i][k] = atof(tab1[i][j]);
k = k+1;
}
}
}
for(int i=0; i<linie; i++)
{
for(int j=0; j<linie; j++)
{
cout << tab2[i][j] << " ";
}
cout << endl;
}
in.close();
- otoczyłem kod tagami - msm*