Depending on what somestlstring
is and what is being done there.
If it is a local variable you are returning a pointer into memory that is being released when GetSomeString
completes, so it is a dangling pointer and an error.
It all boils down to the lifetime of somestlstring
and the operations you perform on it. The pointer returned by .c_str()
is guaranteed to be valid only up to the next mutating operation in the string. So if something changes somestlstring
from the call to .c_str()
and before s
is constructed you will be in undefined behavior land.