如何使用字符串或std::string
创建boost::format
类型的格式化程序对象
正在尝试使用以下未运行的代码。想要实现与以下代码等价的代码(语义上):
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应为"第一个->1,第二个->%1%。"
这样我就可以使用这个s.str()字符串来创建另一个格式对象fmt,我可以将替换值提供给它。
有什么想法吗??
我不清楚你想做什么,boost::format文档是一个很好的起点,有很多清晰的例子展示了如何使用该类。
您可以创建一个格式化程序对象,并通过不同的操作输入元素(不像printf,在printf中,所有参数都需要满足传入的va_arg
)。
boost::format fmter("%2% %1%");
fmter % 36;
fmter % 77;
然后,您可以从结果中获得一个字符串。
std::string s = fmter.str();
请注意,可以抛出许多异常。
如果您正在寻找能够动态创建格式字符串的东西,您可以通过多种方式来实现。
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