Wczytanie danych z pliku oraz usunięcie przecinków.
Ostatnio zmodyfikowano 2009-01-22 12:23
snake_yaro Temat założony przez niniejszego użytkownika |
Wczytanie danych z pliku oraz usunięcie przecinków. » 2009-01-21 15:44:01 Mamy plik imiona.txt . W nim znajdują się dane użytkowników przedstawione w następujący sposób: imie, nazwisko, nr, imie2, nazwisko, nr2, imie3, nazwisko, nr3, Zadaniem jest wczytanie tych danych z pliku do tablicy bez przecinków. Stowrzyłem stukturę i moduł wczytywania danych do tablicy: const int MAX = 50;
struct STOsoba { char imie[ MAX ], nazwisko[ MAX ]; char indeks; };
int main() { int ilosc, z = 0; STOsoba tablica[ MAX ]; fstream plik; plik.open( "imiona1.txt", ifstream::in ); if( !plik ) { cerr << "Blad otwarcia pliku!" << endl; } while( !plik.eof() ) { for( int i = 0; i < ilosc; i++ ) { plik >> tablica[ i ].imie >> tablica[ i ].nazwisko >> tablica[ i ].nr; } } plik.close(); wyswietlanie( tablica, ilosc ); } Ponadto użyłem funkcji wyświetlania zawartości bazy: void wyswietldane( STOsoba osoba ) { cout << " " << osoba.imie << " " << osoba.nazwisko << " " << osoba.indeks << " " << endl; }
void wyswietlanie( STOsoba tab[], int ilosc ) { for( int i = 0; i < ilosc; i++ ) { wyswietldane( tab[ i ] ); } } Natomiast żeby dobrze zapisać dane z pliku do bazy potrzebuję usunąć te przecinki, gdyż jest to niezbędne do sortowania, które nastąpi po poprawnym wczytaniu. Krótko, jak usunąć przecinki, aby poprawnie przygotować dane do sortowania? |
|
DejaVu |
» 2009-01-21 17:56:29 Na samym początku trzeba zacząć od tego, że źle wczytujesz dane. Przykładowe dane: imie,nazwisko,cośtam to,ja,1312313
Twój algorytm wczytywania danych odczyta, że: obiekt.imie = "imie,nazwisko,cośtam"; obiekt.nazwisko = "to,ja,1312313"; Powód jest bardzo prosty: plik>>imie; wczyta tekst do napotkania białego znaku, a co za tym idzie program nie będzie działał prawidłowo. Jeśli masz taki format pliku proponuję dane wczytwać tak: std::string wiersz; getline( plik, wiersz ); Następnie pętlą szukałbym przecinków i zliczał ile przecinków już wczytałem w danym wierszu. Na podstawie aktualnego stanu napotkanych przecinków będziesz mógł stwierdzić w jakiej zmiennej powinny się znaleźć dane. Koniec wywodu. |
|
pekfos |
» 2009-01-22 12:23:25 ja bym tak to zrobił: fstream plik; char bufor[ 1024 ]; string bufor2;
plik.getline( bufor, 1024, ',' ); /.. bufor2 = ""; for( int a = 0; a < plik.gcount(); a++ ) bufor2 += bufor[ a ];
i masz bez przecinków |
|
« 1 » |