[C++] Pobieranie z pliku i konwersja

0

Moj problem wyglada nastepujaco:

mam plik tekstowy postaci:

1.23
1.21
3.34
4.32
itd

pobieram z niego cale liniki getlinem to tablicy temp[10]
a potrzebuje wykorzystac te liczby jako int.
Czy jest jakis sposob zeby ta linijke zapisana w tablicy przerobic na normlnego int ??
Z gory dziekuje za rozwiazanie :)

0

wczytac do stringow, wywalic numerowanie linijek, zapisac do pliku, wczytywac po slowie przez ifstream

0

tylko ze to nie jest numerowanie linijek tylko liczby ułamkowe :/

tak wyglada funkcja zczytujaca linijki:

//=====Funkcja wczytujaca dane z pliku=============
void read()
{
char temp[10]; cout<<endl<<"============================================="<<endl;
i=0;
ifstream plik;
plik.open("biegacz.txt");
do
{
plik.getline(temp,10);
cout<<i+1<<". "<<temp<<endl;
i++;
}while(!plik.eof());
plik.close();
cout<<"============================================="<<endl;
menu();
}

i chyba jeszcze raz wyjasnie o co mi chodzi :) temp jest tablica znakowa o rozmiarze 10. I moj problem polega na tym jak z tego temp zrobic zmienna typu integer. To wyswietlanie jest zrobione tylko dla kontroli co on w ogóle zczytuje.

0

Uh, spoznilem sie, powyzszy fragment jest zly poniewaz myslalem ze jest to jednak numerowanie linii ;P
W takim razie zrob tak:

ifstream in("plik.txt");               //#include <fstream>
string line;                               //#include <string>
int jakisInt;
while (getline(in, line)) {
   line = line.substr(0, line.find("."));    //jedyna zmiana
   jakisInt = atoi(line.c_str());    //#include <cstdlib>
}
0

Jak juz pobierzesz linijke z pliku i zapiszesz ja jako string to potem nic prostrzego. Jest funkcja ktora nazywa sie atoi() i ona konwertuje podany jako argument string na liczbe int. Ale widze ze w twoim pliku sa liczby z kropka czyli nie inty. Zeby przerobic na inny typ uzyj funkcji atof (na float). [browar]

0

Nastety wyswietla same zero :(

0

Dziekuje M_A_R_C_I_N [browar] dziala idealnie :)

0

A mozecie mi wytłumaczyc jeszcze jedna rzecz ?? Dlaczego jak posortuje ta tablice float takim sortowaniem babelkowym to mi obcina miejsca po przecinku ??

void sortowanie()
{
int j = 0, i = 0, x;
while(i<=100){ j = 0;
while(j <= (100-i)){ if(wyniki[j]>wyniki[(j+1)]){ x = wyniki[j];
wyniki[j] = wyniki[(j+1)];
wyniki[(j+1)] = x;
}j++;
}i++;
}

najdziewniejsze jest to ze na 5 liczb (dobrze posortowanych) dwie nie maja miejsca po przecinku :/

0

Jesli wyniki przechowuje dane typu float to w tym miejscu nastepuje konwersja z float na int i ci przycina liczbe ->

x = wyniki[j]
0

zesz ja piernicze :-/ a nie latwiej uzyc takiej cudownej wlasciwosci strumieni ifstream ze wczytuje po 'slowie'?

float liczba;
ifstream in("plik do otwarcia");
while(in >> liczba)
//tu se zrob z liczbami co chcesz 

co do sortowania: nie mozesz uzyc sobie kontenera 'set', ktory rozwiaze za ciebie ten problem?

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