[C++] wczytywanie tekstu ze spacją z pliku - getline nie działa...
Ostatnio zmodyfikowano 2017-06-09 18:43
ws89 Temat założony przez niniejszego użytkownika |
[C++] wczytywanie tekstu ze spacją z pliku - getline nie działa... » 2017-06-09 00:14:42 Dobry wieczór, mam problem z wczytaniem tekstu ze spacją, z pliku "dane" do zmiennej "gatunek". Próbowałem na różne sposoby, ale coś mi widocznie umyka, ponieważ w miejscu wczytanego tekstu jest puste pole. Mógłby mi ktoś powiedzieć co wpisałem źle? Mile widziane również rozwiązanie z wyjaśnieniem. Pozdrawiam #include <iostream> #include <cstdlib> #include <fstream> #include <iomanip>
using namespace std;
struct SElement { int wiek; string gatunek; double cena; SElement * nast; };
void pisz( SElement * adres ) { while( adres ) { cout << "Wiek rosliny : \n"; cout << adres->wiek << endl; cout << "Gatunek rosliny : \n"; cout << adres->gatunek << endl; cout << "Cena rosliny : \n"; cout << adres->cena << endl; adres = adres->nast; cout << endl; }; };
void dodajelement( SElement *& adres, int wiek, string gatunek, double cena ) { SElement * aktualny; aktualny = new SElement; aktualny->wiek = wiek; aktualny->gatunek = gatunek; aktualny->cena = cena; aktualny->nast = adres->nast; adres->nast = aktualny; adres = aktualny; };
int main( int argc, char * argv[] ) { SElement * glowa, * aktualny, * ogon; char wybor; ifstream dane; string nazwa; int licznik; int wiek; string gatunek; double cena; do { cout << "Z jakiego pliku wczytywac dane?\n"; cin >> nazwa; dane.open( nazwa.c_str() ); if( !dane.good() ) { cerr << "Problem z otwarciem pliku " << nazwa << endl; }; } while( !dane.good() ); cout << "Stworzyc liste z danych w pliku ? t/n \n"; cin >> wybor; if( wybor == 't' ) { glowa = new SElement; dane >> glowa->wiek; dane >> glowa->gatunek; dane >> glowa->cena; glowa->nast = NULL; ogon = glowa; cout << "Dodac element do listy ? t/n \n"; cin >> wybor; if( wybor == 't' ) licznik = 1; while( wybor == 't' ) { dane >> wiek; getline( dane, gatunek ); dane >> cena; dodajelement( ogon, wiek, gatunek, cena ); licznik++; cout << "Dodac " << licznik + 1 << " element t/n ? \n"; cin >> wybor; }; } else { cout << "Koniec programu"; exit( 1 ); }; pisz( glowa ); system( "pause" ); return 0; }
|
|
mateczek |
» 2017-06-09 13:11:53 pokaż strukturę pliku. getline pobiera całą linię. Czyli domyślnie do entera, chyba że zdefiniujesz inaczej. Zakłądając że w pliku masz tak: koteczek miałczek dachus pospolitus reks
plik >> zwierze >> imie; plik.ignore(); getline( plik, gatunek ) |
|
j23 |
» 2017-06-09 17:41:37 ... |
|
ws89 Temat założony przez niniejszego użytkownika |
» 2017-06-09 18:43:50 Plik.ignore() pomogło ! Dziękuję i zamykam temat. |
|
« 1 » |