这有点像我的口味:
ostrstream ss;
ss << "Selected elements: " << i << "," << j << ".";
string msg(ss.str(), (size_t)ss.pcount());
是否有一种优雅的方式来使用简洁的单行语句格式化文本消息,可能还有模板或宏?
答案 0 :(得分:2)
是;您正在寻找Boost.Format:
const int i = 3, j = 4;
const std::string msg = (boost::format("Selected elements: %d %d") % i % j).str();
答案 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) + ".");