6
votes

Réécrire une macro C ++ en fonction, etc.

J'ai une macro que j'utilise beaucoup, inspiré par une autre question:

some_function(to_string("The int is " << my_int));


0 commentaires

3 Réponses :


7
votes

in c ++ 11 et plus, nous avons maintenant std :: to_string code> . Nous pouvons utiliser cela pour convertir les données en une chaîne l'annexez à tout ce que vous voulez.

some_function("The int is " + std::to_string(my_int));


2 commentaires

Merci! Mais dois-je l'écrire comme ci-dessus? C'est un peu plus désordonné que la macro originale, et je devrais réécrire un peu de code.


@Jorgen Oui. Ce n'est pas un remplaçant direct. Ils sont de la manière dont vous l'avez avec la macro est la seule façon dont j'ai vu cela, sans réécrire le code comme ci-dessus.



2
votes

ironiquement, to_string est ce que Vous voulez ici.

au lieu de: to_string ("l'int est" << my_int)

Vous pouvez écrire: "l'int est" + to_string (my_int)

Cela retournera une chaîne .

[ exemple en direct ]


0 commentaires

7
votes

Votre macro a plus de possibilités que std :: to_string offres. Il accepte toute séquence raisonnable des opérateurs <<< / code>, définit une base de précision et décimale par défaut. Un moyen compatible consiste à créer un std :: ostringstream implicitement convertible à std :: chaîne : xxx

Live: < Un href = "http://coliru.stacked-crooked.com/a/14515cabae729875"> http://coliru.stacked-crooked.com/a/14515cabae729875


0 commentaires