
//
// To jest przykładowy kod z podrozdziału 10.4 „Otwieranie pliku” książki 
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <fstream>
#include <string>
#include "std_lib_facilities.h"

using namespace std;

//------------------------------------------------------------------------------

int main()
try
{
    ifstream ifs;
    const char* name = "chapter.10.4-problematic.cpp";
    // ...
    string   foo;
    ifs >> foo;                    // Nie uda się — dla strumienia ifs nie otwarto żadnego pliku.
    // ...
    ifs.open(name,ios_base::in);   // Otwarcie do odczytu pliku o nazwie name.
    // ...
    ifs.close();                   // Zamknięcie pliku.
    // ...
    string   bar;
    ifs >> bar;                    // Nie uda się — plik strumienia ifs został zamknięty.
    // ...

    ifs.open("foo", ios_base::in); // Otwarcie do zapisu.
    // Brakuje close()
    ifs.open("foo", ios_base::in); // Nie uda się — strumień ifs jest już otwarty.
    if (ifs) error("Niemożliwe");
}
catch (exception& e) {
    cerr << "Błąd: " << e.what() << '\n'; 
    return 1;
}
catch (...) {
    cerr << "Nieznany wyjątek!\n"; 
    return 2;
}

//------------------------------------------------------------------------------
