C++ “你好世界” Boost T 恤示例程序

发布于 2024-07-24 08:08:37 字数 308 浏览 7 评论 0原文

Boost C++ 库具有函数模板 tee

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

我正在寻找一个完整的 C++ 示例,使用 Boost tee 输出到标准输出和“sample.txt”等文件。

The Boost C++ library has Function Template tee

The class templates tee_filter and tee_device provide two ways to split an output sequence
so that all data is directed simultaneously to two different locations.

I am looking for a complete C++ example using Boost tee to output to standard out and to a file like "sample.txt".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拔了角的鹿 2024-07-31 08:08:37

根据约翰链接的问题的帮助:

#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();
}

Based on help from the question John linked:

#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();
}
习ぎ惯性依靠 2024-07-31 08:08:37

下面是一个使用 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 );
}

Here's an example using tee_filter I'm currently using to tee my Boost.Test output:

{ // 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 );
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文