создание своего ostream в C++
Jan. 16th, 2008 10:49 pmНужно было выводить кучу форматированных сообщений функцией, которая умеет выводить только char*. Раньше я всегда решал проблему через std::ostringstream, а сейчас что-то не захотелось - слишком мусорный код получается с кучей
std::ostringstream s;
s << "foo" << 42;
stupid_print(s.str().c_str());
Чуть-чуть поискал и нашел очень хорошее объяснение, как создавать свои потоки, что же такое в конце концов streambuf и почему в исходники ostringstream смотреть бестолку. Creating Custom C++ Output Streams
P.S. Да, мне очень стыдно, что я это узнал только сейчас, но после вот этого мне уже все пофиг :-)
Update: в посте по ссылке обратите внимание на коммент в конце (про функцию overflow). Я не дочитал до этого места, а зря - мог сэкономить себе часа три-четыре отладки
std::ostringstream s;
s << "foo" << 42;
stupid_print(s.str().c_str());
Чуть-чуть поискал и нашел очень хорошее объяснение, как создавать свои потоки, что же такое в конце концов streambuf и почему в исходники ostringstream смотреть бестолку. Creating Custom C++ Output Streams
P.S. Да, мне очень стыдно, что я это узнал только сейчас, но после вот этого мне уже все пофиг :-)
Update: в посте по ссылке обратите внимание на коммент в конце (про функцию overflow). Я не дочитал до этого места, а зря - мог сэкономить себе часа три-четыре отладки