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

[C++] Wczytywanie lini z dokumentu .txt

Ostatnio zmodyfikowano 2015-06-23 14:47
Autor Wiadomość
SangalnteX
Temat założony przez niniejszego użytkownika
[C++] Wczytywanie lini z dokumentu .txt
» 2015-06-12 20:19:38
Witam

Potrzebuje napisać program który wczyta mi tylko jedną linijkę z dokumentu .txt.
Dokładniej chodzi o to, że mam 50MB plik tekstowy, którego wczytanie całego do programu trwało by trochę długo.
Na plikach tekstowych nigdy nie pracowałem, dlatego chciałbym się dowiedzieć czy istnieją funkcje które:
1. Poda ilość linijek w dokumencie.
2. Wczyta tylko linijkę o danym numerze do stringa.

Z góry dziękuje za odpowiedz
P-133493
stevy
» 2015-06-12 22:33:04
nie słyszałem o takiej funkcji ale możesz zastosować getline:

C/C++
int liczba = 0;
while( !twoj_plik.eof() )
{
    std::getline( plik, jakis_string );
    liczba++;
}

P-133499
SangalnteX
Temat założony przez niniejszego użytkownika
» 2015-06-12 22:45:12
Do kodu który podałeś cały plik musi być wczytany do programu, czy to wczyta tylko jedną linijkę?
P-133500
stevy
» 2015-06-13 00:08:17
załadowany zostanie cały. Czytałem gdzieś że można jakoś załadować tylko fragment, ale nie sądzę, żeby było to dobre rozwiązanie. Mógłbyś rozdzielić ten plik na kilka i ładować resztę, gdy będzie do konieczne
P-133505
pekfos
» 2015-06-23 14:47:14
1. Poda ilość linijek w dokumencie.
Najlepsze rozwiązanie, to wczytywanie pliku blokami i liczenie znaków nowej linii.

2. Wczyta tylko linijkę o danym numerze do stringa.
Jak wyżej. Po odliczeniu n linii, kolejną kopiujesz do stringa i ewentualnie doczytujesz z pliku resztę, jeśli linia kończy się z końcem bloku. To najszybsze rozwiązanie, ale przy tym najtrudniejsze w implementacji (co nie znaczy trudne). Możesz wszystko puszczać przez getline() jeśli chcesz mieć łatwo, na przykład jak w kodzie podanym wyżej, tylko po poprawieniu błędów.
P-133969
« 1 »
  Strona 1 z 1