( Strings JCB 11:57 05/18/12) : >str ( c-addr u -- str ) \ a new u char string from c-addr dup cell+ allocate throw dup >r 2dup ! cell+ \ write size into first cell ( c-addr u saddr ) swap cmove r> ; : str@ dup cell+ swap @ ; : str! ( str c-addr -- c-addr' ) \ copy str to c-addr >r str@ r> 2dup + >r swap cmove r> ; : +str ( str2 str1 -- str3 ) over @ over @ + cell+ allocate throw >r over @ over @ + r@ ! r@ cell+ str! str! drop r> ; : example s" sailor" >str s" hello" >str +str str@ type ;