Salut,
existe-t-il un equivalent à sprintf pour le C++ par exemple quelque chose comme
ofstream f;
...
f.formatedString(format, arguments);
et qui formatterait la chaîne de caractère.
J'ai cherché sur google mais je n'ai pas trouvé mon bonheur.
merci
# ostrstream
Posté par pini . Évalué à 1.
# std::stringstream
Posté par almire . Évalué à 1.
au passage, sprintf() ne devrait jamais etre utilise car on ne peut pratiquement jamais predire la taille de la chaine resultante. snprintf() le garantit mais le resultat risque d'etre tronque.
je ne suis pas sur de comprendre ce que tu veux d'apres ton exemple, mais comme sprintf() sert a formatter une chaine en memoire plutot que vers un fichier, je suppose qu'il te faut utiliser la classe stringstream de la STL. elle possede entre autres la propriete d'un ostream et genere la chaine formatee dans un string sous-jacent auquel on accede par la methode str(). l'utilisation classique est :
#include <sstream>
...
std::stringstream s;
s << "message bidon : le vecteur possede " << v.size() << " elements\n";
string msg = s.str();
tous les types T auxquels correspond un operateur "std::ostream & operator << (std::ostream &, const T &)" (ce qui est le cas des types primitifs bool, int, const char *, etc.) peuvent ensuite etre utilises de la sorte. c'est en general une bonne alternative a une methode toString() qui alourdi le code inutilement.
par exemple,
class host {
...
public :
const string &name() const;
bool state() const;
};
std::ostream & operator << (std::ostream &o, const host &h)
{
return o << "host " << h.name() << " (" << (h.state() ? "up" : "down") << ")";
}
void timeout(const host &h)
{
std::stringstream s;
s << h << " is not responding\n" "abort ?";
popup(s.str());
}
a noter que la classe ostrstream est obsolete.
[^] # Re: std::stringstream
Posté par neil . Évalué à 1.
Tant qu'il n'y a que des nombres et des caractères ça va, si on connait le nombre maximum de bits que peuvent prendre les nombres.
Perso je trouve que la STL elle pue :/ à la rigueur boost c'est un peu mieux...
[^] # Re: std::stringstream
Posté par elloco (site web personnel) . Évalué à 2.
Donc apparemment, je suis un peu obligé d'utiliser sprintf
# boost
Posté par kesako . Évalué à 2.
http://www.boost.org/libs/format/(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.