Boost logo

Boost :

From: John Nagle (nagle_at_[hidden])
Date: 2004-05-27 01:42:45


   I think the relationship between "size()" and "capacity()"
has to be such that if "size() < capacity()" you can add a
character. So "capacity()" should not include the trailing
null.

   For consistency with "<string>", "size()" can't include
the trailing null.

   The big question is whether the size specified in the
declaration (as in "char_string<80>") includes the
trailing null.

   I don't want to express an opinion on this until
I've had some sleep. I can think of good arguments
for both sides.

                                John Nagle

Reece Dunn wrote:

> John Nagle wrote:
>
>> Since space for a trailing null is required, the
>> minimum "capacity" is currently 1.
>>
>> The maximum value for "size()" is then "capacity()-1".
>> That seems a little wierd. Should the trailing null be
>> counted in "capacity?"
>
>
> This is a good point. At the moment fixed_string< n >::capacity() == n.
> It would therefore make sense that this be changed so that either:
>
> [1] fixed_string< n >::capacity() == n - 1 -- this would seem
> counter-intuitive, as fixed_string< 1 > would not be able to store any
> characters!
>
> [2] change CharT str[ n ] to CharT str[ n + 1 ] -- i.e. add an extra
> character for the trailing null. This would make more sense, as it is
> similar to:
> char * str = new char[ s.length() + 1 ];
>
> I personally but a vote for solution 2, but what do other people think?
>
> Regards,
> Reece


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk