首先,有问题的功能。
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”
我知道为什么我的代码不起作用,我只是不知道正确的代码是什么。
答案 0 :(得分:4)
您可能正在寻找std::ostringstream
:
std::ostringstream ostr;
ostr << pathToAnimation << 123 << ".jpg"
std::cout << ostr.str();
答案 1 :(得分:3)
除了使用std::ostringstream之外,C ++ 11还为整数和浮点类型提供了std::to_string重载。使用std::to_string
:
pathToFrame = pathToAnimation + std::to_string(i) + ".jpg";
std::ostringstream
:
std::ostringstream os;
os << pathToAnomation << i << ".jpg";
pathToFrame = os.str();
答案 2 :(得分:1)
使用boost::format你可以写:
pathToFrame = (boost::format("%1%%2%.jpg") % pathToAnimation % i).str();
使用boost::lexical_cast,您也可以写
pathToFrame = pathToAnimation + boost::lexical_cast<std::string>(i) + ".jpg";
答案 3 :(得分:0)
除了Joachim的回答,您还可以使用C ++ 11的新to_string
函数将int
转换为std::string
pathToFrame = pathToAnimation + std::to_string(i) + ".jpg";