• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
424 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 (352,580 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 580 wizyt
pytanie zadane 29 listopada 2015 w PHP przez niezalogowany
0 głosów
1 odpowiedź 1,154 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez tomes235 Początkujący (320 p.)
0 głosów
2 odpowiedzi 598 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)

93,335 zapytań

142,331 odpowiedzi

322,415 komentarzy

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...