需要使用TTF渲染文本在C ++中打印出全局变量。所以它会显示如下:
“杀死总数:”此处可变
知道它有效,但它将文本推向左侧
SDL_Surface* textSurface = TTF_RenderText_Shaded(font, "Humans killed: " + totalKilled, foregroundColor, backgroundColor);
答案 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);