使用可用变量创建'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++;
}
}
答案 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
功能?