Zapisywanie treści wypisanej przez funkcję void() na konsole do pliku.
Ostatnio zmodyfikowano 2017-01-25 20:47
merio901 Temat założony przez niniejszego użytkownika |
Zapisywanie treści wypisanej przez funkcję void() na konsole do pliku. » 2017-01-25 07:12:53 Witam Częścią mojego zadania przy symulacji menu jest zapisywanie całego przebiegu testowania w konsoli do pliku. I tu pojawia się mój problem. W przypadku prostych cout'ów czy zmiennych wczytywanych w mainie wystarcza zwykly zapis przez przez file << x; Jednak w ten sposób w pliku mogę zapisywać tylko maina, a praktycznie cały program wyświetlający menu, opiera się na funkcji void display(), która wypisuje kolejne podpięte menu i podmenu (razem z dodawanymi opcjami - wszystko indeksowane oraz nazywane podczas działania programu) Pytanie: czy da się w jakiś sposób po prostu za jednym zamachem przechwycić wszystko co wypisała funkcja display() i wrzucić to do pliku? cout << "Wybierz: \n1. Dodaj menu \n2. Usun menu \n3. Dodaj opcje \n4. Usun opcje \n5. Rozwin/zwin menu. \n6. Uzyj opcji. \n7. Zmien tresc opcji. \n\n99. Zamknij program." << endl << endl; file << "Wybierz: \n1. Dodaj menu \n2. Usun menu \n3. Dodaj opcje \n4. Usun opcje \n5. Rozwin/zwin menu. \n6. Uzyj opcji. \n7. Zmien tresc opcji. \n\n99. Zamknij program." << endl << endl;
cout << "Wybor:"; cin >> choice; file << "Wybor:" << choice << endl; cout << "Wybrales opcje: " << choice << endl << endl; file << "Wybrales opcje: " << choice << endl << endl; switch( choice ) { case 1: { int menu_choice; cout << "Podaj indeks menu do ktorego chcesz dodac podmenu(GLOWNE: 1): "; file << "Podaj indeks menu do ktorego chcesz dodac podmenu(GLOWNE: 1): "; cin >> menu_choice; file << menu_choice << endl; selectedMenu = mainMenu->check_index( menu_choice ); cout << "Podaj nazwe nowego menu: "; file << "Podaj nazwe nowego menu: "; string x; cin >> x; file << x << endl; Menu * menuItem = new Menu( x ); selectedMenu->add( menuItem ); mainMenu->display(); file << mainMenu->display(); break; }
|
|
mokrowski |
» 2017-01-25 08:08:42 Pewnie że się da. Tylko pytanie, chcesz mieć: 1. Zmianę wyświetlania tego co idzie normalnie na cout na zapis do pliku czy... 2. Ma wyprowadzić na cout i dodatkowo do pliku? |
|
merio901 Temat założony przez niniejszego użytkownika |
» 2017-01-25 19:02:15 Raczej ten drugi punkt. Metoda display() sama w sobie jest obładowana coutami wyswietlającymi w konsoli kolejne menu/podmenu + opcje z wektorów. Tylko jak to teraz sprawnie dodatkowo wyrzucic do pliku? |
|
garlonicon |
» 2017-01-25 19:10:11 Przekieruj strumień za pomocą metody rdbuf. |
|
mokrowski |
» 2017-01-25 20:33:03 Do zmiany na inne wyjście jak napisał @up wystarczy jedynie podstawić pod rdbuf() plik. Do zdwojenia jednak można dodać wrapper. http://wklej.to/wVt4q |
|
merio901 Temat założony przez niniejszego użytkownika |
» 2017-01-25 20:47:18 Co za wyśmienite rozwiązanie! Dzięki! Zamykam temat :) |
|
« 1 » |