#include #include class Buf : public std::filebuf { protected: virtual int_type overflow(int_type c = traits_type::eof()) { return traits_type::eq_int_type(c, traits_type::eof()) ? traits_type::eof() : std::filebuf::overflow(c); } }; int main() { using namespace std; Buf fb; fb.pubimbue(locale("en_US")); fb.open("tmp", ios_base::out); try { fb.sputc('a'); fb.sputc('b'); fb.pubimbue(locale::classic()); fb.sputc('c'); fb.pubsync(); fb.close(); } catch (exception&) { } }