• 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
439 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,120 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 617 wizyt
pytanie zadane 29 listopada 2015 w PHP przez niezalogowany
0 głosów
1 odpowiedź 1,216 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez tomes235 Początkujący (320 p.)
0 głosów
2 odpowiedzi 631 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...