Wczytywanie informacji z pliku tekstowego

0

Witam mam problem otóż nie mogę wczytać informacji z pliku, oto mój kod

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int dupa = 4, japa = 1;
    ofstream zenio( "rysiek.txt");
    ifstream rynio( "rysiek.txt", ios::in );
    zenio << dupa;
    rynio >> japa;
    cout << japa;
    zenio.close();
    rynio.close();
    return 0;
}
 

zmienna japa pokazuje wartość 1, moim zdaniem powinno być to 4. Nie wiem w czym tkwi problem.

0

Nie mam pojęcia dlaczego tak się dzieje, ale wiem jak temu zaradzić :) Po zapisaniu dupa do pliku zamknij go, a potem otwórz jeszcze raz i wtedy wczytaj - to zadziała. A dzieje się to chyba dlatego, że jak zapisujesz to pozycja idzie na koniec pliku, a z końca pliku nic się nie odczyta.

0

dzięki nie wpadłem na to teraz obczaję jak się przesuwa wskaźnik i odpisze czy dałem rade

0
xeo545x39 napisał(a)

Nie mam pojęcia dlaczego tak się dzieje, ale wiem jak temu zaradzić :) Po zapisaniu dupa do pliku zamknij go, a potem otwórz jeszcze raz i wtedy wczytaj - to zadziała. A dzieje się to chyba dlatego, że jak zapisujesz to pozycja idzie na koniec pliku, a z końca pliku nic się nie odczyta.

Ja [CIACH!], o flushowaniu strumienia nie uczyli?

0

Ale, tak jak kolega wyżej pisał, zrób tak, po prostu wstaw zenio.flush(); w tym miejscu:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int dupa = 4, japa = 1;
    ofstream zenio( "rysiek.txt");
    ifstream rynio( "rysiek.txt", ios::in );
    zenio << dupa;
        zenio.flush(); // <<<
    rynio >> japa;
    cout << japa;
    zenio.close();
    rynio.close();
    return 0;
}

I bez żadnego ponownego otwierania.

0

sry za post pod postem ale nie mogę edytować.
Wytłumaczenie dla tych co kiedyś będą mieli ten problem (naprawdę sporo szukałem u wujka i nic nie znalazłem): mianowicie metodą żeby zamknąć jeden strumień i otworzyć później drugi zrobiłem i wyszło ok. Jest też drugi sposób jeśli chcesz otworzyć strumień nie zamykając wcześniej drugiego musisz przesunąć wskaźnik na początek pliku :

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int dupa = 4, japa = 1;
    ofstream zenio( "rysiek.txt");
    ifstream rynio( "rysiek.txt", ios::in );
    zenio << dupa;
    zenio.seekp (0, ios::beg); // to jest to przesuniecie na poczatek
    rynio >> japa;
    cout << japa << "  ";
    zenio.close();
    rynio.close();
    return 0;
}
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1