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:
pour obtenir par exemple : blabla=01blablaFFFF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CString msg; msg.Format("blabla=%02iblabla%04X\r\n", 1 , i );
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à:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ostringstream oss; oss << "blabla" << i << blabla // etc oss.str()
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.
Partager