La conversion de `double` de `string`
Je suis la mise en œuvre de cette:
double x;
ostringstream x_convert;
x_convert << x;
string x_str = x_convert.str();
Il semble un peu superflu. Est-il un moyen plus élégant?
- en double? stackoverflow.com/questions/7228438/...
- Ne le pense pas
- Ne pas identifier cette question
[C]
.ostringstream
,.str();
, sont[C++]
seulement, pas[C]
- Vous pourriez juste envelopper le tout dans une fonction, donc vous n'avez plus à taper. C++11 est fait pour vous,
std::to_string()
, comme tout le monde l'a souligné. Le problème est le manque de contrôle sur la façon dont la chaîne ressemble.
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de C++11? Si donc, il y a:
std::to_string
:Ce que vous avez est le la plus sûre méthode (avant C++11).
Sinon, vous pouvez donc quelque chose comme:
Qui est fonctionnellement équivalent à ce que
std::to_string
n'. Vous devez faire attention à avoir assez d'espace alloué pourbuffer
, et (comme vous pouvez le voir), vous êtes toujours écrit sur les 4 lignes de code pour faire cette conversion, de sorte qu'il n'est pas plus (ni moins) élégant que les autres méthodes.Si vous êtes coincé dans le pré-C++11, vous pouvez mettre en place votre propre
to_string
en faisant quelque chose comme:Qui va travailler pour n'importe quel type qui a déjà une surcharge pour
std::ostream& operator<<(std::ostream&, T&)
.sprintf
qui n'est pas "sûr"; il fonctionne très bien.buffer
à 10, par exemple, il n'est plus le cas.sprintf
.*f
famille de fonctions sont si faciles à prendre des coups de pot au ...Sans C++11, vous pouvez écrire votre propre
to_string
fonction:Avec C++11, comme mentionné par d'autres, l'utilisation
std::to_string
.Sans C++11, vous êtes coincé avec le code que vous avez déjà écrit, ou quelque chose le long de ces lignes. Vous pouvez rendre l'utilisation de ce code un peu plus élégante (lire: moins de frappe) par la construction d'un appareil qui ne la chaîne de la construction pour vous:
Maintenant, vous pouvez:
Mais à la fin de la journée, c'est vraiment juste sucre syntaxique pour la même chose. Il y a des dispositifs similaires dans coup de pouce-j'aimerais utiliser ces si vous le pouvez.