下面代码的C ++等价物是什么?
sprintf(name,"jari%d.jpg",rank+42+size);
帮助我如何将其更改为c ++。有谁可以帮助我?
答案 0 :(得分:4)
我建议ostringstream
:
string name;
{
ostringstream oss;
oss << "jari" << (rank+42+size) << ".jpg";
name = oss.str();
}
详细信息:要使用此解决方案,您需要#include <sstream>
并将ostringstream
拉入using std::ostringstream;
范围(或直接使用std::ostringstream
)。
答案 1 :(得分:3)
等价物是:
#include <sstream>
std::ostringstream s;
s << "jari" << rank + 42 + size << ".jpg";
std::string name = s.str();
在数据类型方面不完全相同,因为最终结果是std::string
而不是char*
,但是最惯用的。
直接输出格式化字符串更简单:
std::cout << "jari" << rank + 42 + size << ".jpg";
或者,还有Boost Format库提供类似的功能:
#include <boost/format.hpp>
boost::format formatter("jari%1%.jpg");
formatter % rank+42+size;
std::string name = formatter.str();
或直接输出字符串:
std::cout << boost::format("jari%1%.jpg") % rank+42+size;
答案 2 :(得分:0)
或者您可以使用提升格式库
cout << boost::format("jari%1%.jpg") % (rank + 42 + size)