Bonjour,

J'ai la mauvaise habitude d'utiliser le type microsoft CString au lieu des std::string . Notamment à cause de cette fonction: CString::Format qui est super pratique pour formater des chaînes à la mode printf().
Mais voilà, aujourd'hui je dois apprendre à m'en passer et utiliser les string standard c++.

je voudrais reprendre mon ancien code qui faisait très simplement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
CString msg;
msg.Format("blabla=%02iblabla%04X\r\n", 1 , i );
pour obtenir par exemple : blabla=01blablaFFFF

J'ai d'abord pensé (après avoir re-relu toute la FAQ c++ [edit: sur les strings seulement ^^ ]) à utiliser les streams avec quelque chose dans ce gout là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ostringstream oss;
oss << "blabla" << i << blabla   // etc
oss.str()
Mon problème dans ce cas là est que je ne sait pas comment formater mon entier pour avoir 2 digits avec un zero, et encore moins comment obtenir une conversion hexa à 4 caractères.

Autre idée, revenir au bon vieux sprintf...
Mais que vais-je devenir le jour où je ne connaitrais pas la taille de la chaîne en sortie ? J'avoue que ça m'embete pas mal de revenir à des gestions manuelles de la taille des chaînes...

Quelle est la meilleure solution ?
Merci de votre aide.