我有一个使用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.x
和event.motion.y
抓住x和y坐标。这是对的吗?
答案 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_cast
或boost::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()
或类似内容以查看它是否失败,并且它并不像您希望的那样普遍。