C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

format de sortie d'un stringstream

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
vincent daanen
Guest





PostPosted: Tue Jun 06, 2006 6:48 pm    Post subject: format de sortie d'un stringstream Reply with quote



Bonjour a tous,

j'utilise une std::stringstream pour formatter plein de donnees en
std::string.

Lorsque je formatte des float (ou des double) 'entiers' (par ex 1.0)
j'obtiens dans ma string 1 alors que je voudrais au moins 1. voir 1.0

Y'a t il un moyen de forcer std::stringstream a faire ca ou faut il
passer par le sprintf du C (avec une bidouille a la cle !)

merci

Vince
Back to top
vincent daanen
Guest





PostPosted: Tue Jun 06, 2006 6:55 pm    Post subject: Re: format de sortie d'un stringstream Reply with quote



vincent daanen a écrit :
Quote:
Bonjour a tous,

j'utilise une std::stringstream pour formatter plein de donnees en
std::string.

Lorsque je formatte des float (ou des double) 'entiers' (par ex 1.0)
j'obtiens dans ma string 1 alors que je voudrais au moins 1. voir 1.0

Y'a t il un moyen de forcer std::stringstream a faire ca ou faut il
passer par le sprintf du C (avec une bidouille a la cle !)

merci

Vince
je suis confus : j'aurais du chercher un peu plus !


la solution :
std::stringstream l_strStream;
std::fixed(l_strStream);

V
Back to top
vincent daanen
Guest





PostPosted: Wed Jun 07, 2006 9:11 am    Post subject: Re: format de sortie d'un stringstream Reply with quote



merci pour toutes ces precisions !

V

kanze a écrit :
Quote:
vincent daanen wrote:

vincent daanen a écrit :



j'utilise une std::stringstream pour formatter plein de
donnees en std::string.



Lorsque je formatte des float (ou des double) 'entiers' (par
ex 1.0) j'obtiens dans ma string 1 alors que je voudrais au
moins 1. voir 1.0



Y'a t il un moyen de forcer std::stringstream a faire ca ou
faut il passer par le sprintf du C (avec une bidouille a la
cle !)



je suis confus : j'aurais du chercher un peu plus !



la solution :
std::stringstream l_strStream;
std::fixed(l_strStream);


Oui et non.

D'abord, l'utilisation ci-dessus est pour le moins peu
habituelle. On écrira noralement plutôt :

l_strStream << std::fixed << laVariable.

Mais aussi, fixed fait bien plus que faire afficher le point. Il
fait que toute valeur sortira en format à virgule fixe (avec six
chiffres derrière le décimal, si tu ne précises pas autrement).
Donc, par exemple, une valeur comme 1.5e300 va générer 307
caractères, et une valeur comme 1.5e-10 apparaîtra comme
0.000000 -- fixed, en C++, correspond au format %f de printf
(tandis que le défaut, c'est l'équivalent de %g). Si la seule
modification voulue, c'est d'afficher le point :

l_strStream << std::showpoint << laVariable ;

fait l'affaire.

Mais tout dépend de ce que tu veux : tu peux aussi spécifier la
précision, au moyen de :

l_strStream << std::fixed << std::setprecision( 2 ) << laVariable ;

pour par exemple, n'avoir que deux chiffres (plutôt que six)
derrière le virgule. Ou utiliser std::setw(n) pour spécifier une
largeur minumum.

--
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

Back to top
kanze
Guest





PostPosted: Wed Jun 07, 2006 9:11 am    Post subject: Re: format de sortie d'un stringstream Reply with quote

vincent daanen wrote:
Quote:
vincent daanen a écrit :

j'utilise une std::stringstream pour formatter plein de
donnees en std::string.

Lorsque je formatte des float (ou des double) 'entiers' (par
ex 1.0) j'obtiens dans ma string 1 alors que je voudrais au
moins 1. voir 1.0

Y'a t il un moyen de forcer std::stringstream a faire ca ou
faut il passer par le sprintf du C (avec une bidouille a la
cle !)

je suis confus : j'aurais du chercher un peu plus !

la solution :
std::stringstream l_strStream;
std::fixed(l_strStream);

Oui et non.

D'abord, l'utilisation ci-dessus est pour le moins peu
habituelle. On écrira noralement plutôt :

l_strStream << std::fixed << laVariable.

Mais aussi, fixed fait bien plus que faire afficher le point. Il
fait que toute valeur sortira en format à virgule fixe (avec six
chiffres derrière le décimal, si tu ne précises pas autrement).
Donc, par exemple, une valeur comme 1.5e300 va générer 307
caractères, et une valeur comme 1.5e-10 apparaîtra comme
0.000000 -- fixed, en C++, correspond au format %f de printf
(tandis que le défaut, c'est l'équivalent de %g). Si la seule
modification voulue, c'est d'afficher le point :

l_strStream << std::showpoint << laVariable ;

fait l'affaire.

Mais tout dépend de ce que tu veux : tu peux aussi spécifier la
précision, au moyen de :

l_strStream << std::fixed << std::setprecision( 2 ) << laVariable ;

pour par exemple, n'avoir que deux chiffres (plutôt que six)
derrière le virgule. Ou utiliser std::setw(n) pour spécifier une
largeur minumum.

--
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
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.