2012-09-20 3 views

Odpowiedz

12
int score = 35; 
float time = 0.03; 
char* name = "Michael"; 
char text[256]; 
sprintf(text,"name is %s, time is %.2f, score is %d", name, time, score); 
CCLabelTTF* label = CCLabelTTF::labelWithString(text,"Arial",20); 
this->addChild(label); 
+0

odpowiedź i kod źródłowy jest super, ale być może chciałbym podkreślić, albo iść z std :: string i jego zdolności złączenie lub sprintf z char * - mieszanie obu jest trochę dziwne (przynajmniej dla mnie). –

+0

prawda, zredagowałem moją odpowiedź. ale czy sprintf akceptuje std :: string? Nie pamiętam. bo osobiście wolę sprintf niż ciąg znaków, aby połączyć ze sobą wszystkie liczby i cyfry, tylko trochę skomplikowane dla mnie. –

+1

Możesz użyć metody 'c_str()' do konwersji 'std :: string'. – alxcyl

5

Prostsze rozwiązanie do ustawienia ciągu znaków w danym momencie (from here). Najpierw zdefiniuj makro w swoim kodzie.

#define ccsf(...) CCString::createWithFormat(__VA_ARGS__)->getCString() 

Następnie można zmienić ciąg każdej chwili takiego:

m_pScoreLabel->setString(ccsf("%d pts", mCurrentScore)); 
Powiązane problemy