2012-03-29 88 views
2

如何使用字符串或std::string创建boost::format类型的格式化程序对象。
试图使用下列不运行的代码。要实现代码等同于下面的代码(语义):boost :: format表单c-string或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(); 

样品情况下:
小号“第一方> 1,二阶>%1%”。
以便我可以使用此s.str()字符串来创建另一个格式对象fmt,我可以向其提供替换值。

任何想法的人?

回答

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 
+0

的目标是完全相反你写:)什么 你所写的内容是 的std :: string s = fmter.str(); 从语义上说从格式化程序获取字符串。 我的意思是赛门铁克是从字符串中获得一个格式化程序。该字符串可能来自格式化程序或其他东西 – Abhinav 2012-03-29 11:17:35

+0

编辑答案:-) – Konrad 2012-03-29 11:19:08

+0

谢谢@Konrad。那正是我所期待的。 – Abhinav 2012-03-29 11:25:58

相关问题