Make data() return _S_empty_string for zero length.
Make readers call data() if _M_str could have been reached if _M_len == 0.
Make clear() and default ctor point to _S_empty_string.
Maybe look for zero length strings in ctors.
Basically, don't allow nullptr.