2

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

我尝试了 sprintf 和 cast 但无济于事。

希望我的描述有道理,谢谢

用代码更新:

 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++;
            }
        }
4

3 回答 3

3

使用std::stringstream. 像这样的东西:

std::stringstream ss;
ss << "invader" << my_int << ".png";
my_func(ss.str().c_str());
于 2012-05-07T06:29:19.280 回答
1

由于您使用的是 C++,因此您可以简单地使用std::string然后使用该c_str()函数来获取const char*可以传递给函数的 a。构造此类字符串的一种简单方法是使用std::ostringstreamfrom <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
}
于 2012-05-07T06:32:02.133 回答
0

然后我猜您希望将int变量转换为char,因此您可以遍历您的invader%d.png 文件。

你试过itoa函数吗?

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

于 2012-05-07T06:29:12.650 回答