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函数将 anint转换为std::string

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