[RFC] Money_get::do_get appends?!?

Paolo Carlini pcarlini@unitus.it
Sun Feb 3 15:58:00 GMT 2002


Nathan Myers wrote:

>>>Almost.  If it fails, it must leave the string unchanged.
>>>
>>You mean: I can call erase at the beginning and then, if it fails during 
>>the parsing, I must remember to call erase once more before bailing out???
>>
>Sorry, worse than that.  If the user passes in "Golgafrincham" the user 
>has to get back either "123" or "Golgafrincham".  You can avoid an
>allocation by parsing characters into an array on the stack and
>expanding to secondary storage only if it's exceeded, and then copying 
>into the string storage.  If it helps any you can make it (or a separate 
>function, for the purpose) a friend of basic_string<>::_Rep.  Or you
>can use basic_string<>::swap.
>

I see. In fact I suspected that something like this was needed in such 
cases.
Tomorrow, if Benjamin does not beat me, I will check the current 
implementation wrt what you indicated. Definitely, we must fix it not to 
always append chars on the string passed by reference.

Thanks,
Paolo.




More information about the Libstdc++ mailing list