C++等效于下面的代码(SprintF)

c++ equivalent of this code below (sprintf)

本文关键字:SprintF 代码 于下面 C++      更新时间:2023-10-16

下面的代码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)