Je cherche a écrire une fonction to_string semblable à boost::lexical_cast
mais
1)dans un seul sens (T -> std::string) et 2)permettant d'utiliser des
manipulateurs (std::hex / std::showbase / etc.). J'ai fait plusieurs essais,
et
j'aimerais avoir votre opinion générale sur chacun d'eux (d'un point de vue
pratique, à l'utilisation) et si il y a de meilleures solutions?
Merci d'avance pour vos commentaires et suggestions.
pour l'utiliser:
| std::cout << to_string(std::hex)(std::showbase)(10);
problèmes:
- la ligne suivante est prise pour une définition de std::hex!!
| to_string(std::hex);
remarque:
- A t'on vraiment besoin des versions non-const dans ce cas là? VC7 ne
compile pas to_string(std::hex) sans les version non-const, alors que Comeau
online oui.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
kanze
SerGioGio wrote:
Je cherche a écrire une fonction to_string semblable à boost::lexical_cast mais 1)dans un seul sens (T -> std::string) et 2)permettant d'utiliser des manipulateurs (std::hex / std::showbase / etc.).
Il existe une classe qui fait ça déjà dans la norme. Elle s'appelle std::ostringstream. Elle est aussi beaucoup plus souple à l'utilisation que tu ne pourrais faire avec une seule fonction.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
SerGioGio wrote:
Je cherche a écrire une fonction to_string semblable à
boost::lexical_cast mais
1)dans un seul sens (T -> std::string) et 2)permettant d'utiliser des
manipulateurs (std::hex / std::showbase / etc.).
Il existe une classe qui fait ça déjà dans la norme. Elle
s'appelle std::ostringstream. Elle est aussi beaucoup plus
souple à l'utilisation que tu ne pourrais faire avec une seule
fonction.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Je cherche a écrire une fonction to_string semblable à boost::lexical_cast mais 1)dans un seul sens (T -> std::string) et 2)permettant d'utiliser des manipulateurs (std::hex / std::showbase / etc.).
Il existe une classe qui fait ça déjà dans la norme. Elle s'appelle std::ostringstream. Elle est aussi beaucoup plus souple à l'utilisation que tu ne pourrais faire avec une seule fonction.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Pierre THIERRY
Le Thu, 19 May 2005 05:23:52 +0200, SerGioGio a écrit :
Je cherche a écrire une fonction to_string [...] permettant d'utiliser des manipulateurs
Si l'utilisation d'un stringstream ne te convient pas, tu pourrais écrire un foncteur ; dans ce cas, c'est la solution la plus évidente. Tu lui surcharges l'opérateur de décalage pour le type fmtflags et l'opérateur () pour ton type T.
Brièvement, Nowhere man --
OpenPGP 0xD9D50D8A
Le Thu, 19 May 2005 05:23:52 +0200, SerGioGio a écrit :
Je cherche a écrire une fonction to_string [...] permettant d'utiliser
des manipulateurs
Si l'utilisation d'un stringstream ne te convient pas, tu pourrais
écrire un foncteur ; dans ce cas, c'est la solution la plus évidente. Tu
lui surcharges l'opérateur de décalage pour le type fmtflags et
l'opérateur () pour ton type T.
Brièvement,
Nowhere man
--
nowhere.man@levallois.eu.org
OpenPGP 0xD9D50D8A
Le Thu, 19 May 2005 05:23:52 +0200, SerGioGio a écrit :
Je cherche a écrire une fonction to_string [...] permettant d'utiliser des manipulateurs
Si l'utilisation d'un stringstream ne te convient pas, tu pourrais écrire un foncteur ; dans ce cas, c'est la solution la plus évidente. Tu lui surcharges l'opérateur de décalage pour le type fmtflags et l'opérateur () pour ton type T.