Tu en es sûr. Il me semblait qu'il y en avait qu'il ne comprenait pas,
et que la précision sur un entier en était un. (Je ne suis pas sûr. je
ne l'ai pas sous la main pour vérifier.)
Tu en es sûr. Il me semblait qu'il y en avait qu'il ne comprenait pas,
et que la précision sur un entier en était un. (Je ne suis pas sûr. je
ne l'ai pas sous la main pour vérifier.)
Tu en es sûr. Il me semblait qu'il y en avait qu'il ne comprenait pas,
et que la précision sur un entier en était un. (Je ne suis pas sûr. je
ne l'ai pas sous la main pour vérifier.)
le Wednesday 07 April 2004 09:29, écrivit :Tu en es sûr. Il me semblait qu'il y en avait qu'il ne comprenait
pas, et que la précision sur un entier en était un. (Je ne suis pas
sûr. je ne l'ai pas sous la main pour vérifier.)
effectivement pour boost::format, un paramètre de précision est passé
à setprecision, même avec %d ou %x, ce qui n'a pas d'effet pour des
formattages d'entiers.
à un moment j'envisageais de rajouter 4-5 lignes de code pour me
rapprocher du comportement de printf, mais j'ai pas reçu de courriels
pour boost::format à ce propos alors j'imagine que ça n'intéresse
personne pour l'instant.
Personnellement si j'avais besoin de forcer une longueur maximale de
chaine formattée, j'ajouterais alors un signe qui marque les cas de
troncation, et je metterais ça dans une fonction :
enfin bon, pour supporter la syntaxe printf autant que possible, je
vais ptetre ajouter ça tot ou tard.
le Wednesday 07 April 2004 09:29, kanze@gabi-soft.fr écrivit :
Tu en es sûr. Il me semblait qu'il y en avait qu'il ne comprenait
pas, et que la précision sur un entier en était un. (Je ne suis pas
sûr. je ne l'ai pas sous la main pour vérifier.)
effectivement pour boost::format, un paramètre de précision est passé
à setprecision, même avec %d ou %x, ce qui n'a pas d'effet pour des
formattages d'entiers.
à un moment j'envisageais de rajouter 4-5 lignes de code pour me
rapprocher du comportement de printf, mais j'ai pas reçu de courriels
pour boost::format à ce propos alors j'imagine que ça n'intéresse
personne pour l'instant.
Personnellement si j'avais besoin de forcer une longueur maximale de
chaine formattée, j'ajouterais alors un signe qui marque les cas de
troncation, et je metterais ça dans une fonction :
enfin bon, pour supporter la syntaxe printf autant que possible, je
vais ptetre ajouter ça tot ou tard.
le Wednesday 07 April 2004 09:29, écrivit :Tu en es sûr. Il me semblait qu'il y en avait qu'il ne comprenait
pas, et que la précision sur un entier en était un. (Je ne suis pas
sûr. je ne l'ai pas sous la main pour vérifier.)
effectivement pour boost::format, un paramètre de précision est passé
à setprecision, même avec %d ou %x, ce qui n'a pas d'effet pour des
formattages d'entiers.
à un moment j'envisageais de rajouter 4-5 lignes de code pour me
rapprocher du comportement de printf, mais j'ai pas reçu de courriels
pour boost::format à ce propos alors j'imagine que ça n'intéresse
personne pour l'instant.
Personnellement si j'avais besoin de forcer une longueur maximale de
chaine formattée, j'ajouterais alors un signe qui marque les cas de
troncation, et je metterais ça dans une fonction :
enfin bon, pour supporter la syntaxe printf autant que possible, je
vais ptetre ajouter ça tot ou tard.
Attention, la précision dans un entier ne tronque pas. En fait, la
signification de la précision dans printf dépend du type et de la
spécification du formattage :
entier :
La précision donne le nombre minimum de chiffres à générer. Le
défaut est 1, ce qui donne "0" pour 0, mais on peut en passer 0 (ce
qui donne une chaîne vide pour 0) ou plus. Donc, quelque chose comme
"%8.4d" de 42 donne " 0042".
Comme j'ai dit, je l'ai fais moi-même plutôt par esprit de défi. Je ne
crois pas que ce soit si essentiel. Si tu as du temps, et tu ne sais
quoi pas en faire, d'accord, mais autrement...
Attention, la précision dans un entier ne tronque pas. En fait, la
signification de la précision dans printf dépend du type et de la
spécification du formattage :
entier :
La précision donne le nombre minimum de chiffres à générer. Le
défaut est 1, ce qui donne "0" pour 0, mais on peut en passer 0 (ce
qui donne une chaîne vide pour 0) ou plus. Donc, quelque chose comme
"%8.4d" de 42 donne " 0042".
Comme j'ai dit, je l'ai fais moi-même plutôt par esprit de défi. Je ne
crois pas que ce soit si essentiel. Si tu as du temps, et tu ne sais
quoi pas en faire, d'accord, mais autrement...
Attention, la précision dans un entier ne tronque pas. En fait, la
signification de la précision dans printf dépend du type et de la
spécification du formattage :
entier :
La précision donne le nombre minimum de chiffres à générer. Le
défaut est 1, ce qui donne "0" pour 0, mais on peut en passer 0 (ce
qui donne une chaîne vide pour 0) ou plus. Donc, quelque chose comme
"%8.4d" de 42 donne " 0042".
Comme j'ai dit, je l'ai fais moi-même plutôt par esprit de défi. Je ne
crois pas que ce soit si essentiel. Si tu as du temps, et tu ne sais
quoi pas en faire, d'accord, mais autrement...
créerais des manipulateurs propres, du genre ToCLabel et ToCPageNumber,
afin de pouvoir écrire :
std::cout
<< ToCLabel( 40 ) << title[ i ]
<< ToCPageNumber( 2 ) << page[ i ]
<< 'n' ;
AMHA, c'est bien plus lisible, et en dérivant de GB_StateSavingManip, ce
n'est vraiment que peu de code.
créerais des manipulateurs propres, du genre ToCLabel et ToCPageNumber,
afin de pouvoir écrire :
std::cout
<< ToCLabel( 40 ) << title[ i ]
<< ToCPageNumber( 2 ) << page[ i ]
<< 'n' ;
AMHA, c'est bien plus lisible, et en dérivant de GB_StateSavingManip, ce
n'est vraiment que peu de code.
créerais des manipulateurs propres, du genre ToCLabel et ToCPageNumber,
afin de pouvoir écrire :
std::cout
<< ToCLabel( 40 ) << title[ i ]
<< ToCPageNumber( 2 ) << page[ i ]
<< 'n' ;
AMHA, c'est bien plus lisible, et en dérivant de GB_StateSavingManip, ce
n'est vraiment que peu de code.
wrote:
(Mais si j'en avais besoin, j'avoue que jecréerais des manipulateurs propres, du genre ToCLabel et ToCPageNumber,
afin de pouvoir écrire :
std::cout
<< ToCLabel( 40 ) << title[ i ]
<< ToCPageNumber( 2 ) << page[ i ]
<< 'n' ;
AMHA, c'est bien plus lisible, et en dérivant de
GB_StateSavingManip, ce n'est vraiment que peu de code.
J'hésite pour ma part souvent entre une solution comme celle ci ou une
solution du style :
Label l = 40;
PageNumber p = 2;
sdt::cout << setw(40) << l << setw(2) << p << 'n';
Ou encore une solution :
Label l = 40;
PageNumber p = 2;
sdt::cout << l.toString(40) << p.toString(2) << 'n';
kanze@gabi-soft.fr wrote:
(Mais si j'en avais besoin, j'avoue que je
créerais des manipulateurs propres, du genre ToCLabel et ToCPageNumber,
afin de pouvoir écrire :
std::cout
<< ToCLabel( 40 ) << title[ i ]
<< ToCPageNumber( 2 ) << page[ i ]
<< 'n' ;
AMHA, c'est bien plus lisible, et en dérivant de
GB_StateSavingManip, ce n'est vraiment que peu de code.
J'hésite pour ma part souvent entre une solution comme celle ci ou une
solution du style :
Label l = 40;
PageNumber p = 2;
sdt::cout << setw(40) << l << setw(2) << p << 'n';
Ou encore une solution :
Label l = 40;
PageNumber p = 2;
sdt::cout << l.toString(40) << p.toString(2) << 'n';
wrote:
(Mais si j'en avais besoin, j'avoue que jecréerais des manipulateurs propres, du genre ToCLabel et ToCPageNumber,
afin de pouvoir écrire :
std::cout
<< ToCLabel( 40 ) << title[ i ]
<< ToCPageNumber( 2 ) << page[ i ]
<< 'n' ;
AMHA, c'est bien plus lisible, et en dérivant de
GB_StateSavingManip, ce n'est vraiment que peu de code.
J'hésite pour ma part souvent entre une solution comme celle ci ou une
solution du style :
Label l = 40;
PageNumber p = 2;
sdt::cout << setw(40) << l << setw(2) << p << 'n';
Ou encore une solution :
Label l = 40;
PageNumber p = 2;
sdt::cout << l.toString(40) << p.toString(2) << 'n';
class ToCLabel
{
public:
ToCLabel( std::string const& label )
: myLabel( label )
{
}
friend std::ostreamd& operator<<( std::ostream&, ToCLabel const& ) ;
private :
std::string myLabel ;
} ;
std::ostream&
operator<<( std::ostream& dest, ToCLabel const& source )
{
IOSave tmp( dest ) ;
dest << std::left << setfill( '.' ) << source + ' ' ;
return dest ;
}
class ToCLabel
{
public:
ToCLabel( std::string const& label )
: myLabel( label )
{
}
friend std::ostreamd& operator<<( std::ostream&, ToCLabel const& ) ;
private :
std::string myLabel ;
} ;
std::ostream&
operator<<( std::ostream& dest, ToCLabel const& source )
{
IOSave tmp( dest ) ;
dest << std::left << setfill( '.' ) << source + ' ' ;
return dest ;
}
class ToCLabel
{
public:
ToCLabel( std::string const& label )
: myLabel( label )
{
}
friend std::ostreamd& operator<<( std::ostream&, ToCLabel const& ) ;
private :
std::string myLabel ;
} ;
std::ostream&
operator<<( std::ostream& dest, ToCLabel const& source )
{
IOSave tmp( dest ) ;
dest << std::left << setfill( '.' ) << source + ' ' ;
return dest ;
}
wrote:class ToCLabel
{
public:
ToCLabel( std::string const& label )
: myLabel( label )
{
}
friend std::ostreamd& operator<<( std::ostream&, ToCLabel const& ) ;
private :
std::string myLabel ;
} ;
std::ostream&
operator<<( std::ostream& dest, ToCLabel const& source )
{
IOSave tmp( dest ) ;
dest << std::left << setfill( '.' ) << source + ' ' ;
c'est pas plutôt source.myLabel, là ?
return dest ;
}
kanze@gabi-soft.fr wrote:
class ToCLabel
{
public:
ToCLabel( std::string const& label )
: myLabel( label )
{
}
friend std::ostreamd& operator<<( std::ostream&, ToCLabel const& ) ;
private :
std::string myLabel ;
} ;
std::ostream&
operator<<( std::ostream& dest, ToCLabel const& source )
{
IOSave tmp( dest ) ;
dest << std::left << setfill( '.' ) << source + ' ' ;
c'est pas plutôt source.myLabel, là ?
return dest ;
}
wrote:class ToCLabel
{
public:
ToCLabel( std::string const& label )
: myLabel( label )
{
}
friend std::ostreamd& operator<<( std::ostream&, ToCLabel const& ) ;
private :
std::string myLabel ;
} ;
std::ostream&
operator<<( std::ostream& dest, ToCLabel const& source )
{
IOSave tmp( dest ) ;
dest << std::left << setfill( '.' ) << source + ' ' ;
c'est pas plutôt source.myLabel, là ?
return dest ;
}