c ++ integer-> std :: conversion de chaîne. Fonction simple?

Problème: j’ai un nombre entier; cet entier doit être converti en un type stl :: ssortingng.

Dans le passé, j’ai utilisé ssortingngstream pour effectuer une conversion, ce qui est ssortingngstream compliqué. Je sais que la méthode C consiste à faire un sprintf , mais je préfère plutôt faire une méthode C ++ qui est typeafe (er).

Y a-t-il une meilleure manière de faire cela?

Voici l’approche ssortingngstream que j’ai utilisée dans le passé:

 std::ssortingng intToSsortingng(int i) { std::ssortingngstream ss; std::ssortingng s; ss << i; s = ss.str(); return s; } 

Bien sûr, cela pourrait être réécrit comme tel:

 template std::ssortingng t_to_ssortingng(T i) { std::ssortingngstream ss; std::ssortingng s; ss << i; s = ss.str(); return s; } 

Cependant, je pense qu’il s’agit d’une implémentation assez lourde.

Zan a noté que l’invocation est plutôt sympa, cependant:

 std::ssortingng s = t_to_ssortingng(my_integer); 

Quoi qu’il en soit, un moyen plus sympa serait … gentil.

En relation:

Alternative à itoa () pour convertir un entier en chaîne C ++?

Maintenant, en c ++ 11, nous avons

 #include  ssortingng s = std::to_ssortingng(123); 

Lien vers la référence: http://fr.cppreference.com/w/cpp/ssortingng/basic_ssortingng/to_ssortingng

Comme mentionné précédemment, je recommande boost lexical_cast. Non seulement il a une syntaxe assez agréable:

 #include  std::ssortingng s = boost::lexical_cast(i); 

cela apporte également une certaine sécurité:

 try{ std::ssortingng s = boost::lexical_cast(i); }catch(boost::bad_lexical_cast &){ ... } 

Pas vraiment, dans la norme. Certaines implémentations ont une fonction itoa () non standard, et vous pouvez rechercher le lexical_cast de Boost, mais si vous respectez la norme, vous aurez le choix entre ssortingngstream et sprintf () (snprintf () si vous en avez).