下面的代码C++等价物是什么?
sprintf(name,"jari%d.jpg",rank+42+size);
帮我如何将其更改为C ++。 谁能帮我?
我建议一个ostringstream
:
string name;
{
ostringstream oss;
oss << "jari" << (rank+42+size) << ".jpg";
name = oss.str();
}
详细信息:若要使用此解决方案,需要#include <sstream>
并将ostringstream
拉入具有using std::ostringstream;
的范围(或仅使用直接限定std::ostringstream
)。
等效项为:
#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";
或者,还有提供类似功能的增强格式库:
#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;
或者您可以使用增强格式库
cout << boost::format("jari%1%.jpg") % (rank + 42 + size)