Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zamykanie pliku poza funkcja

Ostatnio zmodyfikowano 2016-03-12 16:09
Autor Wiadomość
divers
Temat założony przez niniejszego użytkownika
Zamykanie pliku poza funkcja
» 2016-03-12 12:50:53
Witam, chce zamknąć otwarty plik poza funkcją gdzie go otwieram.
W ten sposob go tworze:
C/C++
void create()
{
    string nowy;
    cout << "Utworz plik o nazwie:" << endl;
    cin >> nowy;
   
    fstream c;
    c.open( nowy + ".txt", ios::in | ios::out | ios::trunc );
}
i teraz w main'ie wywoluje:
create();

po czym chce go zamknąć:
c.close();

Jak zwykle, nie potrafie tego zrobic :)
Moze mi ktos pomoc?
P-145918
Gibas11
» 2016-03-12 12:56:39
fstream c
 jest niszczone po zakończeniu funkcji, utwórz to w miejscu jej wywołania i przekaż przez referencję.
P-145919
divers
Temat założony przez niniejszego użytkownika
» 2016-03-12 13:05:52
no tak, ale w jaki sposob?

C/C++
void create( fstream & c )
{
    string nowy;
    cout << "Utworz plik o nazwie:" << endl;
    cin >> nowy;
   
    c.open( nowy + ".txt", ios::in | ios::out | ios::trunc );
}
C/C++
fstream c;
create( c );
P-145920
carlosmay
» 2016-03-12 13:58:22
no tak, ale w jaki sposob?
C/C++
std::fstream create() {
    std::string name;
    std::cin >> name;
    std::fstream file( name + ".txt", std::ios::in | std::ios::out | std::ios::trunc );
    if( file ) {
        // zapisz w pliku
    }
    else {
        std::cerr << "error" << '\n';
        exit( EXIT_FAILURE );
    }
    return file; // zwroc obiekt
}

int main()
{
    std::fstream main_file;
    //.. cos tam
    main_file = create(); // odbierz obiekt
    // operacje na pliku
    main_file.close();
}

Albo tak:
C/C++
void create( std::fstream & file ) {
    std::string name;
    std::cin >> name;
    file.open( name + ".txt", std::ios::in | std::ios::out | std::ios::trunc );
    if( file ) {
        // zapisz w pliku
    }
    else {
        std::cerr << "error" << '\n';
        exit( EXIT_FAILURE );
    }
}

int main()
{
    std::fstream main_file;
    //.. cos tam
    create( main_file );
    // operacje na pliku
    main_file.close();
}
P-145925
Gibas11
» 2016-03-12 15:54:08
@carlosmay
std::fstream create()
Ładnie to tak zwracać strumienie? Toto chyba jest kopiowanie. ;)
P-145928
Monika90
» 2016-03-12 16:09:47
To jest przenoszenie i można tak robić.
P-145931
« 1 »
  Strona 1 z 1