• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++ operacje na pliku TXT, nie wiem czy dobrze go zamykam

0 głosów
552 wizyt
pytanie zadane 8 listopada 2015 w C i C++ przez Quiku Obywatel (1,370 p.)

Witajcie,
Program który pisze ma mieć naprostszą obsługę txt. Chciałem upewnić się że program zamyka TXT, więc zacząłem sprawdzać czy ma do niego dostęp, gdy go zamknę. I, nie wiem czemu, ma do niego dostęp. 
 

void wprowadzanie_ocen()
{
    oceny.open("oceny.txt", ios::in);
    
if(oceny.good())
        {
        cout << "Otwarcie pliku powiodlo sie!" <<endl;
        oceny.close();
        }
else cout << "Nie udalo sie otworzyc pliku!" <<endl;
}

Napisałem to w powyższy sposób. A sprawdzałem w poniższy:

 

void wprowadzanie_ocen()
{
    oceny.open("oceny.txt", ios::in);
    oceny.close();

    if(oceny.good())
        {
        cout << "Otwarcie pliku powiodlo sie!" <<endl;
        }
     else cout << "Nie udalo sie otworzyc pliku!" <<endl;
}

Dlaczego, skoro zaraz po otwarciu zamykam TXT, ciągle wyskakuje mi że się powiodło?

2 odpowiedzi

+3 głosów
odpowiedź 8 listopada 2015 przez Patrycjerz Mędrzec (192,320 p.)

Metoda good zwraca true, gdy dany obiekt nie posiada flag błędów, a nie, gdy plik jest otwarty.

komentarz 8 listopada 2015 przez Patrycjerz Mędrzec (192,320 p.)

Do sprawdzenia, czy plik jest otwarty, masz podobną z nazwy metodę is_openhttp://www.cplusplus.com/reference/fstream/fstream/is_open/.

komentarz 8 listopada 2015 przez Quiku Obywatel (1,370 p.)

Dzięki wielkie :) 
Dla potomnych, jeśli się tacy znajdą:

 

void wprowadzanie_ocen()
{
oceny.open("oceny.txt", ios::in);
oceny.close();
 
if(oceny.is_open())
{
    cout << "Otwarcie pliku powiodlo sie!" <<endl;
}
else cout << "Nie udalo sie otworzyc pliku!" <<endl;

}

 

+1 głos
odpowiedź 8 listopada 2015 przez adrian17 Mentor (354,880 p.)
Dla formalności: jeśli fstream jest lokalnym obiektem, jego destruktor automatycznie zamknie plik - można (i powinno się) więc tak napisać kod, by nie było potrzeby nigdy wywoływania .close().
komentarz 9 listopada 2015 przez Quiku Obywatel (1,370 p.)
Poczytam o tym :)

Podobne pytania

0 głosów
2 odpowiedzi 770 wizyt
pytanie zadane 29 listopada 2015 w PHP przez niezalogowany
0 głosów
1 odpowiedź 1,464 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez tomes235 Początkujący (320 p.)
0 głosów
2 odpowiedzi 818 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)

93,672 zapytań

142,593 odpowiedzi

323,149 komentarzy

63,199 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...