在呈现SDL_TTF文本C ++时显示变量

时间:2014-03-31 14:11:59

标签: c++ sdl

需要使用TTF渲染文本在C ++中打印出全局变量。所以它会显示如下:

“杀死总数:”此处可变

知道它有效,但它将文本推向左侧

SDL_Surface* textSurface = TTF_RenderText_Shaded(font, "Humans killed: " + totalKilled,    foregroundColor, backgroundColor);

2 个答案:

答案 0 :(得分:1)

"Humans killed: " + totalKilled

这是指针算术。 totalKilled转换为std::string,将其连接到"Humans killed: ",并将结果转换为以null结尾的字符串

请改为尝试:

#include <sstream>
#include <string>

template< typename T >
std::string ToString( const T& var )
{
    std::ostringstream oss;
    oss << var;
    return var.str();
}

...

SDL_Surface* textSurface = TTF_RenderText_Shaded
    (
    font, 
    ( std::string( "Humans killed: " ) + ToString( totalKilled ) ).c_str(),
    foregroundColor, 
    backgroundColor
    );

如果您愿意使用Boost,则可以使用lexical_cast<>代替ToString()

答案 1 :(得分:1)

如果您使用的是c ++ 11,则可以使用std :: to_string()。

std::string caption_str = "Humans killed: " + std::to_string(totalKilled)

SDL_Surface* textSurface = TTF_RenderText_Shaded(font, caption_str.c_str(),    foregroundColor, backgroundColor);