C ++ «Привет, мир!».

Библиотека Boost C ++ имеетТройник шаблона функции

Шаблоны классов tee_filter и tee_device предоставляют два способа разделения выходной последовательности так, чтобы все данные направлялись одновременно в два разных места.

Я ищу полный пример C ++, используя тройник Boost для вывода на стандартный выход и в файл, как "sample.txt".

 John Weldon16 июн. 2009 г., 02:37
Предыдущий вопрос (не совсем дурак) есть пример.
 1800 INFORMATION16 июн. 2009 г., 02:38
Ти является одной из библиотек в Boost
 stefanB16 июн. 2009 г., 02:42
Есть ссылки? Я не могу найти ничего связанного .. может быть, это только я
 stefanB16 июн. 2009 г., 02:31
Что ты имеешь в виду под надписью?

Ответы на вопрос(2)

Решение Вопроса

Основываясь на помощи из вопроса, Джон связал:

#include <boost/iostreams/tee.hpp>
#include <boost/iostreams/stream.hpp>
#include <fstream>
#include <iostream>

using std::ostream;
using std::ofstream;
using std::cout;

namespace bio = boost::iostreams;
using bio::tee_device;
using bio::stream;

int main()
{
    typedef tee_device<ostream, ofstream> TeeDevice;
    typedef stream<TeeDevice> TeeStream;
    ofstream ofs("sample.txt");
    TeeDevice my_tee(cout, ofs); 
    TeeStream my_split(my_tee);
    my_split << "Hello, World!\n";
    my_split.flush();
    my_split.close();
}
 John Weldon16 июн. 2009 г., 04:08
Спасибо Мэтью; отлично.
 Matthew Flaschen16 июн. 2009 г., 07:42
Спасибо, cwhii. Готово.

Вот пример использованияtee_filter В настоящее время я использую для вывода мой Boost.Test вывод:

{ // init code, use static streams to keep them alive until test run process end

    using namespace boost::iostreams;
    static ofstream ofs("boost_test_output.log.xml"); // log file
    static tee_filter<ostream>  fileFilt(ofs); // tee all passed data to logfile

    // note derives from `boost::iostreams::output_filter`
    static text_xml_readability_filter xmlFilt; // filter all passed data, making the XML output readable

    static filtering_ostream filter; // master filter

    filter.push(fileFilt); // 1st, tee off any data to the file (raw boost XML)
    filter.push(xmlFilt);  // 2nd make the xml data stream readable (linebreaks, etc.)
    filter.push(cout);     // 3rd output the readable XML to cout

    boost::unit_test::unit_test_log.set_stream( filter );
}

Ваш ответ на вопрос