如何使用字符串或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,我可以为其提供替换值。
任何想法的人?
答案 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