C ++ / SDL渲染文本

时间:2011-09-14 14:19:39

标签: c++ sdl

我有一个使用SDL_ttf来显示文本的应用程序。这可以很好地通过:TTF_RenderText_Solid( font, "text here", textColor );然而,我想知道如何渲染整数。我假设他们需要先将字符串转换为字符串,但我遇到了这个问题。特别是当我想显示鼠标的x和y位置时:

if( event.type == SDL_MOUSEMOTION )
{           
    mouse_move = TTF_RenderText_Solid( font, "need mouse x and y here", textColor );
}

我相信我可以通过event.motion.xevent.motion.y抓住x和y坐标。这是对的吗?

3 个答案:

答案 0 :(得分:3)

  

我假设他们需要先将字符串转换为字符串

不,不是铸造而是转换。最简单的方法是使用流,例如:

#include <sstream>

// ...

std::stringstream text;
// format
text << "mouse coords: " << event.motion.x << " " << event.motion.y;
// and display
TTF_RenderText_Solid(font, text.c_str(), textColor);

答案 1 :(得分:2)

std::stringstream tmp;
tmp << "X: " << event.motion.x << " Y: " << event.motion.y;
mouse_move = TTF_RenderText_Solid( font, tmp.str().c_str(), textColor );

答案 2 :(得分:1)

通常我会使用boost::lexical_castboost::format

之类的内容
int r = 5;
std::string r_str = boost::lexical_cast<std::string>(r);

int x = 10, 7 = 4;
std::string f_str = boost::str( boost::format("Need %1% and %2% here") % x % y );

我倾向于避免std::stringstream,除非它是迭代的。您必须检查.good()或类似内容以查看它是否失败,并且它并不像您希望的那样普遍。