循环遍历一个字符串,输出多个char

时间:2013-12-24 13:09:27

标签: c++ string

我正在使用C ++和SDL来制作有趣的游戏。

我使用需要const char*的TTF_RenderText将屏幕上的杀戮计数显示为表面。在我希望显示各个数字的位置之间存在空白,因此我将字符串拆分为单独的char s。

这是我编写的用于拆分字符串并在屏幕上呈现它的代码:

        SpareStream.str("");
        SpareStream << Kills;
        std::string KillsString = SpareStream.str();

        for (int i = 0; i <= 4; i++)
        {
            if(i < KillsString.size()) 
            {
                std::string Cheat = KillsString.substr(i,i+1);
                const char *KillsChar = Cheat.c_str();
                Message = TTF_RenderText_Solid(EightBitLimit,KillsChar,White);
            }
            else Message = TTF_RenderText_Solid(EightBitLimit,"0",White);
            ApplySurface(540 + (45 * i),(500 - HUD->h) + 24,Message,Screen);
        }

然而,当杀戮计数超过100时,会发生这种情况:

http://i.imgur.com/XdeCLtc.png

显示数十和数字只显示十位数。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

从我的引用中,std :: string :: substr是:

string substr (size_t pos = 0, size_t len = npos) const;

这是一个开始/长度对,而不是开始/结束,所以你需要:

 std::string Cheat = KillsString.substr(i,1);
顺便说一下,虽然开始/长度对很少用于标准库中的容器,但它们在C语言中的char *管理非常普遍,它经常出现在字符串类中。