Afficher un message
Vieux 30/04/2008, 23h51   #3
p-fifty-fifty@hotmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Problème avec les facets - Pour les heures

On 30 avr, 23:36, "Eric.Malenf...@gmail.com"
<Eric.Malenf...@gmail.com> wrote:
> On Apr 30, 4:29 pm, p-fifty-fi...@hotmail.com wrote:
> [snip]
>
>
>
> > template<typename CharT> class BasicHourOFacet
> > : public std::time_put<CharT>
> > {

> [snip]
> > /* Data member */
> > const char_type *myFormat;

>
> > };

> [snip]
>
> > template<typename CharT>
> > BasicHourOFacet<CharT>::BasicHourOFacet(const char_type *Format,
> > size_t R) :
> > std::time_put<char_type>(R),
> > myFormat (Format)
> > {}

>
> Ceci est fragile: En ne compiant que le pointeur, il faut que le
> Format passé par le créateur de la Facet reste alloué tant que la
> Facet existe.
>
> > template<typename CharT>
> > std::basic_string<CharT> BasicHourOFacet<CharT>::ToString(const
> > tm_type &Me) const
> > {
> > std::basic_ostringstream<char_type> Oss;

>
> > put(Oss, Oss, Oss.fill(), &Me, myFormat, myFormat +
> > sizeof(myFormat));

>
> sizeof(myFormat) == sizeof (char*) != strlen(myFormat).
>
> > Plus precisement ca vient du "%H %M %S", seul les quatres premiers
> > caracteres sont "pris" (càd "%H %"), et je ne comprends pas pourquoi

>
> Si, sur ta plateforme, tu as des pointeurs de 4 bytes,
> sizeof(myFormat) == 4. Le dernier paramètre passé a put() dans
> ToString() pointe donc au 4e caractère de "%H %M %S" et put() ne
> "voit" donc que "%H %"


en effet c'etais ca, erreur stupide de ma part, merci
  Réponse avec citation
 
Page generated in 0,07207 seconds with 9 queries