2

使用可能な変数を使用して「constchar*」を作成する最良の方法は何ですか?たとえば、関数には、ファイル、つまり「invader1.png」を見つけるためのパラメーターとしてconstchar*が必要です。5つの異なる侵入者画像がある場合、1:5から繰り返すにはどうすればよいですか? "Invader1.png" .. "Invader2.png..etcなど、" invader "+%d +".png"が必要です

私はsprintfとcastingを試しましたが、役に立ちませんでした。

私の説明が理にかなっていることを願っています、ありがとう

コードで更新:

 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*このような文字列を作成する簡単な方法の1つは、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()と文字配列を使用することもできますが、その場合は、バッファーのサイズなどに注意する必要があります。std::string完全を期すために、sprintfで同じことを行う方法を次に示しますが、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 に答える