strcat and spaces?

Ben Abbott bpabbott at mac.com
Wed Nov 26 10:33:35 CST 2008


On Wednesday, November 26, 2008, at 11:24AM, "Søren Hauberg" <soren at hauberg.org> wrote:
>ons, 26 11 2008 kl. 10:54 -0500, skrev Ben Abbott:
>> That feature is a manifestation of how "cellstr" works. Specifically, all trailing spaces are trimmed.
>
>Okay, fair enough. So, the obvious follow-up question is: why does
>'cellstr' behave like that? I get that this is the compatible behavior,
>but I'm just trying to see the reasoning behind this. Is this some great
>feature that I simply fail to appreciate?
>
>Søren
>

I think it is due to the need to pad spaces/blanks at the end of character data in a matrix format.

octave:155>  c = ["one";"two";"three"]
c =

one  
two  
three

octave:156> whos c
Variables in the current scope:

  Attr Name        Size                     Bytes  Class
  ==== ====        ====                     =====  ===== 
       c           3x5                         15  char

Total is 15 elements using 15 bytes

octave:150> s = cellstr(c)
s =

{
  [1,1] = one
  [2,1] = two
  [3,1] = three
}

octave:151> numel(s{1})
ans =  3
octave:152> numel(s{2})
ans =  3
octave:153> numel(s{3})
ans =  5

When converted to cells the trailing spaces/blanks are "deblanked".

Then we can come full circle with

octave:154> c = char(s)
c =

one  
two  
three


Ben




More information about the Octave-maintainers mailing list