Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wczytywaniem danych z pliku do pamieci [getline]?

Ostatnio zmodyfikowano 2014-01-14 16:09
Autor Wiadomość
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
C/C++
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 ?
P-102154
leon_w
» 2014-01-14 16:02:44
C/C++
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).


P-102158
wojownik266
» 2014-01-14 16:09:51
Możesz to zrobić mniej więcej w taki oto sposób:
C/C++
#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;
        /*getline( plik, t_m );
            getline( plik, z_m );
            getline( plik, g_m );
            getline( plik, s_m );*/
        rozmiar++;
        cout << t_m << endl;
    }
    plik.close();
    return rozmiar;
}
P-102160
« 1 »
  Strona 1 z 1