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

Przejście do nowej linii podczas wczytywania danych z pliku

Ostatnio zmodyfikowano 2009-11-02 22:22
Autor Wiadomość
aRusher
Temat założony przez niniejszego użytkownika
Przejście do nowej linii podczas wczytywania danych z pliku
» 2009-11-02 19:37:31
Aby wczytywać dane z pliku, używam sobie klasy 'fstream' i obecnej tam funkcji getline.

Dane w pliku zrodlowym wyglądają tak:

tytul
utwor
link

tytul
utwor
link

A wczytuje je w petli:
C/C++
while( !eof( zrodlo ) )
{
    getline( zrodlo, tytul );
    getline( zrodlo, utwor );
    getline( zrodlo, link );
    //w tym miejscu chce opuscic jedna linie - jak?
}

Do tej pory w miejscu komentarza używam półśrodka:
readline(zrodlo,enter);
Zmienna enter niczego sensownego nie przechowuje, wykorzystuję ją tylko do tego przejścia.

Jak to zrobić w bardziej elegancki sposób?
P-11243
DejaVu
» 2009-11-02 20:35:03
Załóżmy że masz plik. Plik ten posiada dane zapisane w wierszach. Nie znasz długości każdego z wierszy, więc musisz odczytywać dane sekwencyjnie, aby dowiedzieć się gdzie się kończy dany wiersz. Rozwiązanie, które masz tj. wczytanie wiersza pomimo, iż Ciebie on nie interesuje jest prawidłowe. Gdybyś znał długość każdego z wierszy to mógłbyś wykonać skok do odpowiedniej pozycji w pliku. W przeciwnym wypadku jesteś skazany na czytanie (no zawsze można zgadywać, ale raczej z efektu działa algorytmu zgadującego nie był byś zadowolony ;p).

/edit:
Uściślając:
C/C++
std::string smietnik;
getline( zrodlo, smietnik );
P-11244
aRusher
Temat założony przez niniejszego użytkownika
» 2009-11-02 20:56:48
A jeśli wiem, że ta śmieciowa linia jest pusta ;)? Jak przejść o odpowiednią liczbę pozycji do przodu, tak, by ominąć tę pustą linię :)?
P-11245
DejaVu
» 2009-11-02 21:16:03
Lepiej ją wczytać, ponieważ w pliku nowy wiersz pod Windowsem będzie zapisany jako dwa znaki \\r\\n, natomiast pod Linuxem ten sam kod skompilowany będzie zapisywał tylko \\n. Poruszanie się po pliku masz opisane w lekcji http://kursy.ddt.pl/?LessonId=110
P-11246
Elaine
» 2009-11-02 22:22:46
...przy czym jeśli plik nie jest otwarty z ios::binary, to znaki nowej linii, jakie by nie były, są tłumaczone na pojedynczy \\n.
P-11255
« 1 »
  Strona 1 z 1