conversion double -> const char* - C++ - Programmation
Marsh Posté le 13-01-2008 à 02:56:43
Zieute du côté de ostringstream : http://cplusplus.com/reference/iostream/ostringstream/
Il te suffit de définir un ostringstream et d'utiliser l'opérateur <<.
La propriété str te permet d'obtenir le const char* que tu veux.
Essaie de raisonner d'abord en C++ plutôt qu'en C : sprintf() c'est effectivement irremplaçable dans certains cas particuliers, mais dans la majorité des cas, le C++ fournit des classes bien plus pratiques et moins embêtantes à utiliser (je pense surtout à la gestion mémoire).
Marsh Posté le 13-01-2008 à 04:00:06
Elmoricq a écrit : Zieute du côté de ostringstream : http://cplusplus.com/reference/iostream/ostringstream/ |
Merci, je vais regarder ça
Marsh Posté le 13-01-2008 à 04:37:41
Salut,
Tu peux aussi jeter un oeil du côté de boost::lexical_cast (le 2nd exemple correspondant à ce que tu cherches).
Marsh Posté le 13-01-2008 à 07:52:08
Je dois être bête, mais je ne comprends pas le fonctionnement de ces exemples.
______________________________________________
void log_message(const std::string & );
void log_errno(int yoko)
{
log_message("Error " + boost::lexical_cast<std::string>(yoko) + ": " + strerror(yoko));
}
______________________________________________
Je suis incapable de faire le lien entre l'entrée (le int yoko on dorait ?) et la sortie (???)
Marsh Posté le 13-01-2008 à 13:01:10
Le type de la sortie est l'argument du template. L'entrée est en effet int yoko. Le résultat de l'expression
Code :
|
est donc une string contenant yoko en littéral. Tu n'as qu'à remplacer 'yoko' par ton double, et c'est bon. Si l'utilisation d'un char* est vraiment indispensable, tu n'as plus qu'à appeller std::string::c_str() sur l'objet résultant.
Marsh Posté le 13-01-2008 à 17:37:50
Je vais essayer ça quand j'aurai mon programme sous la main
Marsh Posté le 13-01-2008 à 02:41:09
Bonjour !
J'ai besoin dans un programme de convertir un nombre que j'ai en "double" en un "const char*" car il faut que je concatène plusieurs double.
J'essaie donc de faire une boucle qui avant chaque concaténation va transformer le double en un const char* mais je n'y arrive pas.
J'ai essayé avec "sprintf(pulstemp2, "%f", pulstemp);" mais apparemment ça ne convertit qu'en char et le compilateur me donne l'erreur suivante : invalid conversion from ‘char’ to ‘char*’
Y'aurait-il une bonne âme qui pourrait m'offrir un petit coup de pouce ?
Merci beaucoup par avance