Boost学习之格式化输出--Format

原文地址

boost::format类提供了类似C语言里'printf'功能的格式化输出能力,当然功能更强大。

所需头文件:
#include <boost/format.hpp>
示例代码:
    #include <iostream>
    #include <string>
    #include <boost/format.hpp>
    
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
    // 使用%序号%的方式给出指示符, 后面用%连接对应的数据。
        cout << boost::format("writing %1%,  x=%2% : %3%-th try") % "toto" % 40.23 % 50 << endl;
    // 输出:writing toto,  x=40.23 : 50-th try
    
    // 可以延迟使用,顺序不必一致
        boost::format fmter("%2% %1%");
        fmter % 36;
        fmter % 77;
        cout << fmter << endl;
    // 输出:77 36
    
    // 可重用
        fmter % 12;
        fmter % 24;
        cout << fmter << endl;
    // 输出:24 12
    
    // 可直接转成字符串
        std::string s = fmter.str();
        std::string s2 = str( boost::format("%2% %1% %2% %1%")%"World"%"Hello");
    
        cout << s << endl << s2 << endl;
    // 输出:
    // 24 12
    // Hello World Hello World
    
    // 可以使用printf指示符
        cout << boost::format("%3.1f - %.2f%%") % 10.0 % 12.5  << endl;
    // 输出:10.0 - 12.50%
    
    // printf指示符里使用N$指定使用第几个参数
        cout << boost::format("%2$3.1f - %1$.2f%%") % 10.0 % 12.5  << endl;
    // 输出:12.5 - 10.00%
    
        cin.get();
    return 0;
    }
boost::format里的指示符语法大致有三大类:
继承并强化自printf的格式化字符串
    形式为:[ N$ ] [ flags ] [ width ] [ . precision ] type-char
    N$可选,指定使用第N个参数(注意,要么所有指示符都加此参数,要么都不加)
    接下来的参数可以参数printf的指示符,只是format为其中的flags添加了'_'和'='标志,用于指出内部对齐和居中对齐。
设置打印规则,它是printf参数的一个补充,只是为了更直观点。
    形式为:%|spec|
    如:%|1$+5|表示显示第一个参数,显示正负号,宽度为5
简单的位置标记
    形式为:%N%
    简单地声明显示第N个参数,优点是比较直观而且不用指定类型。

posted on 2016-10-20 14:01 FongLuo 阅读(361) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2016年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

常用链接

留言簿

随笔分类(11)

随笔档案(79)

文章档案(1)

收藏夹(38)

学习网站

一般网站

最新随笔

搜索

积分与排名

最新评论

阅读排行榜