2013-08-23 2 views
0

En regardant à travers Q lié & A, il semble que le meilleur C++ pratique pour la conversion en chaîne estQuel est concis C++ idiome pour la conversion de int | double à la chaîne?

ostringstream stringStream; 
stringStream << input_value;  // let's say, input_value is a double 
output_string = stringStream.str(); 

Est-il possible d'obtenir le même en moins de trois lignes de propre C++?

+2

pour autant que je sache, personne ne – Alex

+0

en double de http://stackoverflow.com/questions/5590381/easiest -way-to-convert-int-string-in-c et http://stackoverflow.com/questions/332111/how-do-i-convert-a-double-into-a-string-in-c – HAL

+1

Mettez les trois lignes ci-dessus dans une fonction, alors cela ne prendra qu'une ligne. –

Répondre

11

Utilisation de la famille std::to_string des fonctions:

std::string s = std::to_string(3.1416); 

Si vous n'avez pas le nécessaire C++ 11, une autre option est boost::lexical_cast.

std::string s = boost::lexical_cast<std::string>(3.1416); 
10

Oui, avec std::to_string:

output_string = std::to_string(input_value); 

(Pour C++ 03, regardez dans boost::lexical_cast).

+3

Notez qu'il s'agit d'une fonction 'C++ 11' – Paranaix

3

Si vous n'avez pas C++ 11, vous pouvez utiliser quelque chose comme:

boost::lexical_cast<std::string>(input_value); 

(il est assez facile d'écrire votre propre to_string si vous ne voulez pas que Boost - vous sommes juste juste en train d'encapsuler votre code existant dans une fonction).

Si vous faire ont C++ 11, avec le bâton std::to_string Jesse Bon & juanchopanza déjà mentionné.

+0

boost ne fait pas partie du C++ standard. Et tout emballer dans une fonction cachant tout peut toujours être fait par n'importe qui, mais ... ça n'explique rien –

+0

'to_string' et' lexical_cast' sont des fonctions - quelle est la différence? – Useless

+0

to_string et std :: stringstream font partie de la norme C++. Boost n'est pas. Et si nous admettons prendre d'autres fonctions livrées, nous jouons à un jeu différent. –

0

Les deux sont une seule ligne en 11 C: de

std::string s1 = std::to_string(42); 

et

std::string s2 = std::to_string(42.0); 
Questions connexes