0

まず、問題の関数です。

bool Animation::loadFrames()
{
        sf::Texture frame[frameCount];
        std::string pathToFrame;
        for(int i = 1; i < frameCount; i++)
        {
            pathToFrame = pathToAnimation + i + ".jpg";
            if(!frame[i].loadFromFile(pathToFrame)) return false;
        }
        return true;
}

私に問題を与えている行は

pathToFrame = pathToAnimation + i + ".jpg";

pathToAnimationは別のstd::stringであり、frameCountはintです。どういうわけか、「。/ Assets / Sprites / Player / Stand/1.jpg」のような文字列を作成したいと思います。

コードが機能しない理由はわかっていますが、正しいコードが何であるかわかりません。

4

4 に答える 4

4

あなたはおそらく探していstd::ostringstreamます:

std::ostringstream ostr;
ostr << pathToAnimation << 123 << ".jpg"

std::cout << ostr.str();
于 2012-06-08T07:34:11.150 に答える
3

std :: ostringstreamを使用することに加えて、C++11はstd::to_stringに整数anf浮動小数点型のオーバーロードを提供します。とstd::to_string

pathToFrame = pathToAnimation + std::to_string(i) + ".jpg";

std::ostringstream

std::ostringstream os;
os << pathToAnomation << i << ".jpg";
pathToFrame = os.str();
于 2012-06-08T07:44:22.717 に答える
1

boost :: formatを使用すると、次のように記述できます。

pathToFrame = (boost::format("%1%%2%.jpg") % pathToAnimation % i).str();

boost :: lexical_castを使用すると、次のように書くこともできます

pathToFrame = pathToAnimation + boost::lexical_cast<std::string>(i) + ".jpg";
于 2012-06-08T07:41:08.070 に答える
0

Joachimの答えに加えて、C++11の新しいto_string関数を使用してをに変換するintこともできます。std::string

pathToFrame = pathToAnimation + std::to_string(i) + ".jpg";
于 2012-06-08T07:46:49.727 に答える