Fondamentalmente il tuo ragionamento è giusto.
Proprio ieri,in una mia applicazione dovevo far vedere un numero tramite un msgbox.
In Vb6 mi sarebbe bastato fare MsgBox(Numero), mentre mi sono reso conto che in C ho dovuto fare

codice:
char *c = itoa(Numero,new char[3],10);
MessageBox(NULL,c,NULL,MB_OK);
delete[] c;
E ovviamente ho dovuto fare il ragionamento adatto.
Non saprei proprio cosa scegliere.