2012-09-20 4 views

risposta

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

il codice di risposta e la fonte è grande, ma forse vorrei ricordare ad andare sia con std :: string e le sue abilità concatenare , o sprintf con char * - mescolare entrambi è un po 'strano (almeno per me). –

+0

sì vero, ho modificato la mia risposta. ma sprintf accetta std :: string? Non riesco a ricordare. coz Personalmente preferisco sprintf che usare string per collegare tutti i numeri e le cifre insieme, solo un po 'complicato per me. –

+1

È possibile utilizzare il metodo 'c_str()' per convertire un 'std :: string'. – alxcyl

5

Una soluzione più semplice per impostare la stringa in un dato momento (from here). Prima definisci una macro da qualche parte nel tuo codice.

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

Quindi è possibile modificare la stringa qualsiasi momento come questo:

m_pScoreLabel->setString(ccsf("%d pts", mCurrentScore));