boost :: format形式c-string或std :: string

时间:2012-03-29 10:54:36

标签: c++ boost string-formatting stringstream stdstring

如何使用字符串或boost::format创建std::string类型格式化程序对象。
尝试使用以下不运行的代码。想要实现等效于以下代码的代码(语义上):

    format fobj("first-> %1% , second-> %2%");
    std::stringstream s;
    s<<fobj %1 %"%1%.";    //so that I can use s.str() to create a boost object
// How to create fmt object  HERE  
    ss<< fmt %"replacedtext";
    cout<<s.str()<<endl;
    cout<<ss.str();

示例案例:
s “first-&gt; 1,second-&gt;%1%。”
这样我就可以使用这个s.str()字符串创建另一个格式对象fmt,我可以为其提供替换值。

任何想法的人?

1 个答案:

答案 0 :(得分:4)

我不清楚你要做什么,boost::format文档是一个很好的起点,有很多明显的例子说明如何使用这个类。

您可以通过不同的操作创建格式化程序对象和提要元素(不像是printf,其中所有参数都需要满足您传入的va_arg)。

boost::format fmter("%2% %1%");
fmter % 36; 
fmter % 77;

然后,您可以从结果中获取字符串。

std::string s  = fmter.str();

请注意,可以抛出number of exceptions

如果您正在寻找能够动态创建格式字符串的内容,您可以通过多种方式实现这一目标。

std::string strFormatString = "first-> %1% second-> %2%";
boost::format formatter( strFormatString.c_str() );
formatter % value1;
formatter % strFormatString.c_str();
boost::format secondFormatter( formatter.str() );  // etc etc etc