[solved]cout, clog oder cerr abfangen?



  • Hallo,

    ich bin gerade dabei zu versuchen irgendwie die standard streams cout, clog und cerr zu ersetzen, bekomm es aber nicht hin.

    Soweit bin ich:

    #include <iostream>
    using namespace std;
    
    template <class charT, class Traits=char_traits<charT> >
    class OStreamLog : public basic_ostream<charT,Traits>
    {
    public:
    	OStreamLog(basic_streambuf<charT,Traits>* sb) : basic_ostream<charT,Traits>(sb) 
    	{
    	}
    };
    
    int main(int argc, char* argv[])
    {
    	OStreamLog<char, char_traits<char>> o(clog.rdbuf());
    	clog = o; // Error, den ich nicht verstehe (*)
    }
    

    (*) Error 1 error C2249: 'std::basic_ios<_Elem,_Traits>::operator =' : no accessible path to private member declared in virtual base 'std::basic_ios<_Elem,_Traits>' c:\programme\microsoft visual studio 8\vc\include\ostream 581 😮 👍

    Ich müsste dann noch von de Klasse OStreamLog den << Operator überladen. Wenn das nur gehen würde... 😡

    MfG
    Firebyte



  • Ui war ziemlicher mist, was ich da versucht hab ^^ (hab wenig geschlafen 🙄 )

    So gehts...

    #include <iostream>
    using namespace std;
    
    class OStreamLog : public streambuf
    {
    public:
    	OStreamLog()
    	{
    	}
    
    	streamsize xsputn(const char *pChar, streamsize n)
    	{
    		cout << "Log: " << pChar <<  endl;
    		return streambuf::xsputn(pChar, n);
    	}
    };
    
    int main(int argc, char* argv[])
    {
    	OStreamLog o;
    	clog.rdbuf(&o);
    }
    


  • 💡 Du kannst deine Beiträge auch editieren...mal so btw 😉


Anmelden zum Antworten