Zamykanie pliku poza funkcja
Ostatnio zmodyfikowano 2016-03-12 16:09
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: 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? |
|
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ę. |
|
divers Temat założony przez niniejszego użytkownika |
» 2016-03-12 13:05:52 no tak, ale w jaki sposob? void create( fstream & c ) { string nowy; cout << "Utworz plik o nazwie:" << endl; cin >> nowy; c.open( nowy + ".txt", ios::in | ios::out | ios::trunc ); }
|
|
carlosmay |
» 2016-03-12 13:58:22 no tak, ale w jaki sposob? |
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 ) { } else { std::cerr << "error" << '\n'; exit( EXIT_FAILURE ); } return file; }
int main() { std::fstream main_file; main_file = create(); main_file.close(); } Albo tak: 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 ) { } else { std::cerr << "error" << '\n'; exit( EXIT_FAILURE ); } }
int main() { std::fstream main_file; create( main_file ); main_file.close(); } |
|
Gibas11 |
» 2016-03-12 15:54:08 @carlosmay std::fstream create() Ładnie to tak zwracać strumienie? Toto chyba jest kopiowanie. ;) |
|
Monika90 |
» 2016-03-12 16:09:47 To jest przenoszenie i można tak robić. |
|
« 1 » |