While it is possible to use SetString without copying the string, it is ...

...certainly more error-prone.  If the string is not constant, we should require a length and allocator to be specified.