deutsche umlaut streambuf



  • ein neben produkt von ic 2.0:

    #include <iostream>
    
    class umlaut_streambuf : public std::streambuf
    {
    public:
        umlaut_streambuf(std::streambuf * orginal_streambuf)
            :   orginal_streambuf_( orginal_streambuf )
        {
            for(int i = 0; i < 256; ++i)
                convertiere_tabbele_[i] = i;
            convertiere_tabbele_[196] = 142;
            convertiere_tabbele_[228] = 132;
            convertiere_tabbele_[214] = 153;
            convertiere_tabbele_[246] = 148;
            convertiere_tabbele_[220] = 154;
            convertiere_tabbele_[252] = 129;
            convertiere_tabbele_[223] = 225;
        }
    
    protected:
        virtual int_type overflow(int_type c = std::streambuf::traits_type::eof())
        { 
            if(!traits_type::eq_int_type( c, traits_type::eof() ))
                return orginal_streambuf_->sputc( convertiere_tabbele_[c] );
            else
                return traits_type::eof();
        }
    
    private:
        int_type                convertiere_tabbele_[256];
        std::streambuf * const  orginal_streambuf_;
    
    private:
        umlaut_streambuf(const umlaut_streambuf &);
        umlaut_streambuf & operator= (const umlaut_streambuf &);
    };
    
    int main()
    {
        using namespace std;
    
        streambuf *         alter = cout.rdbuf();
        umlaut_streambuf    neuer( alter );
        cout.rdbuf( &neuer );
    
        // ...
        cout << "ÄäÖöÜüß";
        // ...
    
        cout.rdbuf( alter );
    }
    

    ps. in der FAQ

    // C-Variante:
    const unsigned char AE = unsigned char ( 142 );
    

    sicher das man so ein cast unter c hat?



  • Tja, leider zu spät - Hume Sikkins hat soetwas schon gemacht (findest du irgendwo im Mod-Forum), aber ich habe es bis heute noch nicht hinzugefügt 🙄.

    MfG SideWinder


Anmelden zum Antworten