c ++相当于下面的代码(sprintf)

时间:2014-01-21 23:51:36

标签: c++ c cout printf

下面代码的C ++等价物是什么?

sprintf(name,"jari%d.jpg",rank+42+size);

帮助我如何将其更改为c ++。有谁可以帮助我?

3 个答案:

答案 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)