2013-08-07 60 views
0

我有一个小问题,是否有可能在函数中使用%i?这是我需要做的。我有一个回调函数:C++:如何在函数中使用%i?

engine.gui->menu.addItem(Menu::AGILITY,"Agility (+1 defense)"); 

,我想以这种方式来使用它:

engine.gui->menu.addItem(Menu::AGILITY,"Agility (%i defense)",engine.level); 

如何需要实现,或可能不甚至可能吗? 我尽我所能做了一些事情,但我没有管理它。 :( 我想这样做的原因是玩家报仇到下一个等级,engine.level的数量得到++,所以玩家等级提升后他可以在不同的等级获得更多的敏捷性,然后练级,他可以被告知如何。许多敏捷,他可以得到的。

+0

您可以将'vsnprintf'封装起来,但这并不完全无关紧要,因为您需要内存来存放临时字符串。 –

回答

0

如果你有C++ 11,你可以做:

engine.gui->menu.addItem(
     Menu::AGILITY, 
     "Agility (" + std::to_string(engine.level) + " defense)"); 

如果你没有C++ 11,你应该有相当于 std::to_string在您的工具包中。例如:

template <typename T> 
std::string 
toString(T const& obj) 
{ 
    std::ostringstream result; 
    result << obj; 
    return result.str(); 
}