使用int创建const char *

时间:2012-05-07 06:25:48

标签: c++ string printf

使用可用变量创建'const char *'的最佳方法是什么?例如,函数需要const char *作为参数来定位文件,即“invader1.png”。如果我有5个不同的入侵者图像,我怎么能从1:5迭代所以“Invader1.png”..“Invader2.png..etc等 所以我想要“入侵者”+%d +“。png”

我试过sprintf和铸造,但无济于事。

我希望我的描述有意义,谢谢

使用代码更新:

 for (int y=0; y<250; y+=50){
            stringstream ss;
            ss << "invader" << (y/50) << ".png";
            const char* rr = ss.str().c_str();
            printf("%s", rr);
            for (int x=0; x<550;x+=50){
                Invader inv(rr, x+50, y+550, 15, 15, 1, false, (y/50 + 50));
                invaders[i] = inv;
                i++;
            }
        }

3 个答案:

答案 0 :(得分:3)

使用std::stringstream。像这样:

std::stringstream ss;
ss << "invader" << my_int << ".png";
my_func(ss.str().c_str());

答案 1 :(得分:1)

由于您使用的是C ++,因此只需使用std::string,然后使用c_str()函数获取可以传递给函数的const char*。构造此类字符串的一种简单方法是使用std::ostringstream中的<sstream>

for (int i = 1; i <= 5; ++i) {
    std::ostringstream ss;
    ss << "invader" << i << ".png";
    foo(ss.str().c_str()); // where foo is the specified function
}

你也可以使用sprintf()和一个字符数组,但是你需要注意缓冲区的大小。为了完整起见,这里是如何使用sprintf做同样的事情,但我建议你采用std::string方法,这更像是C ++:

for (int i = 1; i <= 5; ++i) {
    char buf[13]; // big enough to hold the wanted string
    std::ostringstream ss;
    sprintf(buf, "invader%d.png", i);
    foo(buf); // where foo is the specified function
}

答案 2 :(得分:0)

然后我猜你想要将int变量转换为char,这样你就可以遍历你的入侵者%d.png文件。

您是否尝试过itoa功能?

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/