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