如何在Boost库中格式化字符串

Nee*_*eel 3 c++ boost

我想用C ++中的boost库格式化字符串。我正在做如下。

std::string msg = "Version: %1. Version %2.";
boost::format formatter(msg.c_str());
formatter % "v1" % "v2";
xyz_function(msg);
Run Code Online (Sandbox Code Playgroud)

我们可以在一条语句中使用sprintf做到这一点,因此是否有一种方法可以优化上述boost实现以在一条语句或其他语句中形成字符串?

提前致谢。

hne*_*atl 5

一个boost::format对象可以转换为字符串,并且还具有显式转换功能。

boost::format fmt
    = boost::format("Luke %1% and Han %2%.") % "Skywalker" % "Solo";
Run Code Online (Sandbox Code Playgroud)

因此,可以使用以下任一方法:

  • std::string fmtStr = boost::str(fmt);
  • std::string fmtStr = fmt.str();

参见示例和演示,以及Boost库格式;获得std :: stringboost::str提示。

  • 一个问题:它应该是“%1”还是“%1%”? (2认同)