Problem z wczytywaniem danych z pliku do pamieci [getline]?
Ostatnio zmodyfikowano 2014-01-14 16:09
Mixer33 Temat założony przez niniejszego użytkownika |
Problem z wczytywaniem danych z pliku do pamieci [getline]? » 2014-01-14 15:35:22 Witam, mam taka funkcje string t_m; int nr; string z_m, g_m, s_m;
ifstream plik; plik.open( "baza.txt" ); int rozmiar = 0; while( !plik.eof() ) { plik >> nr; getline( plik, t_m ); getline( plik, z_m ); getline( plik, g_m ); getline( plik, s_m ); rozmiar++; } plik.close(); return rozmiar; }
I wszystko dziala ok jesli bylo wszedzie tak jak przy nr i wczytywalem tylko cin'em zmienilem teraz na getline(cin, np. t_m) i zapetla mi sie to. Co moge poprawic aby zczytywalo mi ladnie z pliku ? |
|
leon_w |
» 2014-01-14 16:02:44 plik >> nr; getline( plik, t_m );
|
Nie powinno się tak robić, ponieważ po wczytaniu pierwszym sposobem ( >> ), w strumieniu zostaje znak nowego wiersza. Następna funkcja getline(), jako pierwszy wyłapuje pozostawiony znak nowego wiersza i kończy wczytywanie (nie wczytuje się nic). |
|
wojownik266 |
» 2014-01-14 16:09:51 Możesz to zrobić mniej więcej w taki oto sposób: #include <iostream> #include <fstream> #include <string>
using namespace std; int main() { string z_m, g_m, s_m; string t_m; int nr; ifstream plik; plik.open( "baza.txt" ); int rozmiar = 0; while( !plik.eof() && getline( plik, t_m ) ) { plik >> nr; rozmiar++; cout << t_m << endl; } plik.close(); return rozmiar; }
|
|
« 1 » |