Zapisanie do pliku
Ostatnio zmodyfikowano 2019-06-06 22:57
makaj Temat założony przez niniejszego użytkownika |
Zapisanie do pliku » 2019-06-06 21:46:08 Witam. Jestem początkujący i chciałbym zapisać wszystko co w programie zostało wypisane w consoli do pliku. Plik otworzyć potrafię tylko co wpisać przy 'plik <<"? |
|
pekfos |
» 2019-06-06 22:04:57 Jeśli chcesz wypisać wszystko do pliku zamiast do konsoli, to do tego wystarczy uruchomić program w odpowiedni sposób. |
|
makaj Temat założony przez niniejszego użytkownika |
rerere » 2019-06-06 22:24:14 Chciałbym otworzyć w konsoli i zapisać wszystko do pliku. jesli mogłnym to proszę o fragment kodu |
|
pekfos |
» 2019-06-06 22:57:55 Ale chcesz by dane trafiały do pliku i do konsoli, czy do pliku zamiast do konsoli? Samą zmianę konsoli na plik możesz osiągnąć używając pliku zamiast std::cout, albo przekierowując standardowe wyjście do pliku przy uruchamianiu programu. Żeby wypisywany tekst trafiał w dwa miejsca naraz, rozwiązanie jest znacznie bardziej skomplikowane. Możesz zrobić na przykład tak: #include <iostream> #include <streambuf> #include <fstream>
class ConsoleLogger : public std::streambuf { public: ConsoleLogger( std::ostream & _stream, const char * _file ) : m_cout( _stream ) , m_file( _file ) { m_coutBuf = _stream.rdbuf( this ); } ~ConsoleLogger() { m_cout.rdbuf( m_coutBuf ); } protected: std::ostream & m_cout; std::streambuf * m_coutBuf; std::ofstream m_file; int_type overflow( int_type c ) override { if( c != EOF ) { m_coutBuf->sputc( c ); return m_file.rdbuf()->sputc( c ); } return c; } };
int main() { ConsoleLogger logger( std::cout, "log.txt" ); std::cout << "Test " << 123 << '\n'; } |
|
« 1 » |