Wczytywanie danych z pliku i ich edycja
Ostatnio zmodyfikowano 2013-01-19 15:15
akcza Temat założony przez niniejszego użytkownika |
Wczytywanie danych z pliku i ich edycja » 2013-01-19 13:00:16 Witam, chcę napisać sobie program pytający mnie słówek z angielskiego. Jednak mam mały problem z wczytaniem danych z pliku. Struktura pliku: gotowka|cash| zamozny|well off| wyplacac|take out| w trudnej sytuacji materialnej|hard up| wplacac|pay in| tani|cheap| Kod programu: #include <iostream> #include <fstream>
using namespace std;
string slowka[ 100 ][ 1 ]; int liczba_slowek = 0; string nazwa_slownika = "slownik.txt";
void obrobka( string wiersz, int nr_slowka ) { string tmp, s1; int i2, i1, nr; tmp = ""; s1 = ""; nr = nr_slowka; for( i2 = 0; i2 < 2; i2++ ) { tmp = wiersz.substr( wiersz.find( "|" ) + 1 ); s1 = wiersz.erase( wiersz.find( "|" ), wiersz.length() ); slowka[ nr ][ i2 ] = s1; wiersz = tmp; } }
void wczytaj_slownik() { fstream slownik; slownik.open( nazwa_slownika.c_str(), ios::in | ios::out ); string dane = ""; int i = 0; while( getline( slownik, dane ) ) { obrobka( dane, i ); i = i + 1; } liczba_slowek = i; }
int main( int argc, char * argv[] ) { wczytaj_slownik(); int i, i1; for( i = 0; i < liczba_slowek; i++ ) { for( i1 = 0; i1 < 2; i1++ ) { cout << slowka[ i ][ i1 ] << endl; } } return 0; }
Małe objaśnienie kodu: wczytaj_slownik() - zawiera pętle, w której każdy wiersz przesyła do funkcji obróbka(), która ma za zadanie "wyciągnąć" dane z wiersza. Dla podanego pliku tekstowego, tablica slowka powinna wygladac tak: slowka[ 0 ][ 0 ] = gotowka slowka[ 0 ][ 1 ] = cash slowka[ 1 ][ 0 ] = zamozny slowka[ 1 ][ 1 ] = well off slowka[ 2 ][ 0 ] = wyplacac slowka[ 2 ][ 1 ] = take out slowka[ 3 ][ 0 ] = w trudnej sytuacji materialnej slowka[ 3 ][ 1 ] = hard up slowka[ 4 ][ 0 ] = wplacac slowka[ 4 ][ 1 ] = pay in slowka[ 5 ][ 0 ] = tani slowka[ 5 ][ 1 ] = cheap
A wyglada tak: slowka[ 0 ][ 0 ] = gotowka slowka[ 0 ][ 1 ] = zamozny slowka[ 1 ][ 0 ] = zamozny slowka[ 1 ][ 1 ] = wyplacac slowka[ 2 ][ 0 ] = wyplacac slowka[ 2 ][ 1 ] = w trudnej sytuacji materialnej slowka[ 3 ][ 0 ] = w trudnej sytuacji materialnej slowka[ 3 ][ 1 ] = wplacac slowka[ 4 ][ 0 ] = wplacac slowka[ 4 ][ 1 ] = tani slowka[ 5 ][ 0 ] = tani slowka[ 5 ][ 1 ] = cheap
Siedzę nad tym już drugą godzinę, wszystko (w sumie skoro nie działa to nie wszystko :D ) już sprawdziłem, a to nadal nie działa. Z góry dzięki za pomoc! |
|
kubawal |
» 2013-01-19 14:13:03 Daj errory. Czy tablica slowka nie powinna być zdefiniowana jako string slowka[ 100 ][ 2 ]; ? |
|
akcza Temat założony przez niniejszego użytkownika |
» 2013-01-19 14:52:43 Errory? Chodzi o błędy w kompilowaniu? Żadnych nie ma, wszystko ładnie się kompiluje, tylko słowka w tablicy są źle "poukładane".
Tablica slowka, ma tylko dwa elementy (słowko po polsku i po angielsku), wiec slowka[100][1] powinno starczyc... Jakieś pomysły? :)
#EDIT Jednak trzeba było dać slowka[100][2], ale czemu...
Dzięki za pomoc! |
|
Wasilek |
» 2013-01-19 15:15:03 A no dlatego, że tutaj określasz rozmiar tablicy (100*2), a odwoływanie się do poszczególnych elementów zaczyna się od 0 :) |
|
« 1 » |