Wczytywanie liczb z pliku textowego operatorem >>
Ostatnio zmodyfikowano 2016-09-04 15:16
ForExample Temat założony przez niniejszego użytkownika |
Wczytywanie liczb z pliku textowego operatorem >> » 2016-09-03 15:29:53 Witam. Mam problem polegający na tym, że gdy sposobem podanym w tytule zapisuję liczby do tablicy coś nie dzieje po mojej myśli. Ogólnie rzecz w tym, że pętla wczytująca liczby do tablicy wykonuje się chyba nieodpowiednią liczbę razy. Głównym moim zapotrzebowaniem jest to, jaki warunek powinien się znaleźć, aby skończyć wczytywanie liczb do tablicy po wczytaniu ostatniej liczby występującej w pliku. |
|
carlosmay |
» 2016-09-03 15:42:25 Głównym moim zapotrzebowaniem jest to, jaki warunek powinien się znaleźć, aby skończyć wczytywanie liczb do tablicy po wczytaniu ostatniej liczby występującej w pliku. | if(nieUdałoSięWczytać)Słabo idzie mi z wróżeniem. Pokaż kod i zawartość pliku. |
|
ForExample Temat założony przez niniejszego użytkownika |
» 2016-09-03 17:39:00 int tablica[ 400 ];
while( nie wiem co dac tutaj ) { file_x >> tablica[ i ]; i++; }
probowalem z for ale tez zle bylo, bo dawalem warunek "dopoki file_x.good()"... |
|
carlosmay |
» 2016-09-03 17:49:04 size_t i = 0; while( file_x >> tablica[ i++ ] ); Oczywiście musisz mieć gwarancję, że tablica ma wystarczający rozmiar. Lepiej używać std::array<> niż gołej tablicy, a w tym przypadku std::vector<> bo nie trzeba pilnować rozmiaru std::vector < int > tablica; int liczba { }; while( file_x >> liczba ) { tablica.push_back( liczba ); } |
|
ForExample Temat założony przez niniejszego użytkownika |
» 2016-09-03 18:16:43 Jeszcze nie znam tych rzeczy o ktorych piszesz, wiec wolalbym po prostu uzyc tablicy. Jednak samo while( file_x >> tablica[ i++ ] ); nic nie dalo |
|
carlosmay |
» 2016-09-03 18:34:33 #include <iostream> #include <fstream>
int main() { constexpr int rozmiar { 400 }; int tablica[ rozmiar ]; std::ifstream fin( nazwaPliku ); size_t i { 0 }; while( fin >> tablica[ i++ ] ); for( auto const & elem: tablica ) std::cout << elem << ' '; std::cout << '\n'; } Wklej i skompiluj. |
|
ForExample Temat założony przez niniejszego użytkownika |
» 2016-09-03 18:48:35 Coś poszło nie tak, wyskoczyło 100 wielkich dziwnych liczb. Poza tym też nie wszystko co napisałeś jest mi znane void load_numbers( string const file ) { fstream filex; filex.open( file ); int i = 0, x; if( !filex.good() ) { cerr << "Nie udalo sie otworzyc pliku" << endl; exit( 0 ); } else { int tablica[ 400 ]; while( tutaj jest problem ) { filex >> tablica[ i ]; i++; } cout << i << endl; cout << tablica[ 16 ] << endl; cout << tablica[ i ]; } filex.close(); }
|
|
carlosmay |
» 2016-09-03 19:12:35 while( true ) { if( !( filex >> tablica[ i ] ) ) break; i++; } |
UB jeśli rozmiar tablicy odpowiada ilości wczytań z pliku. UB - niezdefiniowane zachowanie. Poza tym też nie wszystko co napisałeś jest mi znane |
Nic nie stoi na przeszkodzie poznać. |
|
« 1 » 2 3 |