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

Zapisanie do pliku

Ostatnio zmodyfikowano 2019-06-06 22:57
Autor Wiadomość
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 <<"?
P-174758
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.
Frazy, które należy wpisać w wyszukiwarkę google:
P-174759
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
P-174760
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:
C/C++
#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';
}
P-174761
« 1 »
  Strona 1 z 1