Re: Problème avec les facets - Pour les heures
  Home FAQ Contact Sign in
fr.comp.lang.c++ only
 
Advanced search
POPULAR GROUPS

more...

 Up
Re: Problème avec les facets - Pour les heures         

Group: fr.comp.lang.c++ · Group Profile
Author: p-fifty-fifty
Date: Apr 30, 2008 14:51

On 30 avr, 23:36, "Eric.Malenf...@gmail.com"
gmail.com> wrote:
> On Apr 30, 4:29 pm, p-fifty-fi...@hotmail.com wrote:
> [snip]
>
>
>
>> template class BasicHourOFacet
>> : public std::time_put
>> {
> [snip]
>> /* Data member */
>> const char_type *myFormat;
>
>> };
> [snip]
>
>> template
>> BasicHourOFacet::BasicHourOFacet(const char_type *Format,
>> size_t R) :
>> std::time_put(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
>> std::basic_string BasicHourOFacet::ToString(const
>> tm_type &Me) const
>> {
>> std::basic_ostringstream 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
no comments
diggit! del.icio.us! reddit!