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



如何使用字符串或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

相关内容

  • 没有找到相关文章

最新更新