c ++中字符串格式化的首选方法?

时间:2014-12-11 01:30:56

标签: c++ string-formatting

这有点像我的口味:

ostrstream ss;
ss << "Selected elements: " << i << "," << j << ".";
string msg(ss.str(), (size_t)ss.pcount());

是否有一种优雅的方式来使用简洁的单行语句格式化文本消息,可能还有模板或宏?

2 个答案:

答案 0 :(得分:2)

是;您正在寻找Boost.Format

const int i = 3, j = 4;
const std::string msg = (boost::format("Selected elements: %d %d") % i % j).str();

live demo

答案 1 :(得分:-6)

你最有可能找到的是sprintf,它的作用类似于printf,但返回一个cstring。 因此你的代码将是
string msg(sprintf( "Selected elements: %d, %d.", i, j ) )

修改

看起来我没有读过自己的链接。所以你再次有一个三行代码。您始终可以定义以下内容

std::string itostr( int i )
{
    char temp[20];
    std::sprintf( temp, "%d" i);
    std::string out(temp);
    return out;
}

然后你可以使用+运算符来连接字符串。

string msg("Selected elements: " + itostr(i) + "," + itostr(j) + ".");