从另一个字符串,int和字符串文字定义字符串

时间:2012-06-08 07:31:42

标签: c++ string

首先,有问题的功能。

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 个答案:

答案 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";