boost::format常用用法

本文介绍Boost.Format库的基本及高级用法,包括格式化字符串、参数绑定及格式化选项的设置等,通过实例演示如何实现复杂的格式化输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 头文件 p167

        #include <boost/format.hpp>
        using namespace boost;
  2. 一个简单的例子

        #include <boost/format.hpp>
        using namespace boost;
    
        int main()
        {
            cout<< format("%s:%d+%d=%d\n")%"sum"%1%2%(1+2);
            format fmt("(%1% + %2%) * %2% = %3%\n");
            fmt%2%5;
            fmt%((2+5)*5);
            cout<<fmt.str();
    
            return 0;
        }

    %X%指示参数的位置,类似C#语言

  3. 高级用法 P189

    • basic_format& bind_arg(int argN, const T& val)

    把格式化字符串第argN位置的输入参数固定为val, 即使调用clear()也保持不变,除非调用clear_bind()或clear_binds()。

    • baisc_format& clear_binds()

    取消格式化字符串所有位置的参数绑定,并调用clear().

    • basic_format& modify_item(int itemN, T manipulator)

    设置格式化字符串第itemN位置的格式化选项,manipulator是一个boost::io::group()返回的对象。

    • boost::io::group(T1 a1, ..., Var const& var)

    它是一个模板函数,最多支持10个参数(10个重载形式),可以设置IO流操纵器指定格式或输入参数值,IO流操纵器位于头文件<iomanip>.

    
    #include <boost/format.hpp>
    
    
    #include <iomanip>
    
    
    using namespace boost;
    using boost::io::group;
    
    int main()
    {
        //声明format对象,有三个输入参数,五个格式化选项
        format fmt("%1% %2% %3% %2% %1% \n");
        cout << fmt %1 %2 %3;
    
        fmt.bind_arg(2,10);         //将第二个输入参数固定为数字10
        cout << fmt %1 %3;
    
        fmt.clear();                //清空缓冲,但绑定的参数不变
        //在%操作符中使用group(),指定IO流操纵符第一个参数显示为八进制
        cout << fmt % group(showbase,oct, 111) % 333;
    
        fmt.clear_binds();          //清除所有绑定参数
    
        //设置第一个格式化项,十六进制,宽度为8, 右对齐, 不足位用*填充
        fmt.modify_item(1, group(hex, right, showbase, setw(8), setfill('*')));
        cout << fmt % 49 % 20 % 100;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值