Przejście do nowej linii podczas wczytywania danych z pliku
Ostatnio zmodyfikowano 2009-11-02 22:22
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: while( !eof( zrodlo ) ) { getline( zrodlo, tytul ); getline( zrodlo, utwor ); getline( zrodlo, link ); }
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? |
|
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: std::string smietnik; getline( zrodlo, smietnik ); |
|
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ę :)? |
|
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 |
|
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. |
|
« 1 » |