2014-03-31 49 views
1

需要使用TTF呈現文本在C++中打印出全局變量。因此,它會顯示這樣的:在呈現SDL_TTF文本時顯示變量C++

「總死亡人數:」 Varible這裏

得到這個它的工作原理,但它推手文字向左

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

你是什麼意思「向左推文字」?請詳細說明你想要達到的目標。 –

+0

'totalkilled'的類型是什麼? 'int'? – genpfault

回答

1
"Humans killed: " + totalKilled 

這是指針運算。它轉換totalKilledstd::string,連接到"Humans killed: ",並將結果轉換爲空終止的字符串。

試試這個:

#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 
    ); 

如果你願意使用升壓你可以使用lexical_cast<>而不是ToString()

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);