代码之家  ›  专栏  ›  技术社区  ›  CW Holeman II

C++“Hello World”Boost TEE示例程序

  •  12
  • CW Holeman II  · 技术社区  · 15 年前

    Boost C++库有 Function Template tee

    类模板tee_filter和tee_device提供了两种方法来拆分输出序列 使所有数据同时定向到两个不同的位置。

    我正在寻找一个完整的C++示例,使用Boost TEE输出到标准输出,并输入到一个像“Stask.txt”这样的文件。

    2 回复  |  直到 15 年前
        1
  •  26
  •   Matthew Flaschen    15 年前

    基于约翰链接的问题的帮助:

    #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();
    }
    
        2
  •  0
  •   Martin Ba    10 年前

    下面是一个使用 tee_filter 我目前正在使用tee我的boost。测试输出:

    { // 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 );
    }
    
    推荐文章