It is possible to call .c_str() for a C++ const string.
In order to efficiently implement this, it means that it must internally store an extra null character. (Otherwise, copying or modifying data would be required for a .c_str() call)
Therefore a C++ string is always null-terminated, even before calling c_str().
Right? Or wrong?
In C++11 and later, mystring.c_str() is equivalent to mystring.data() is equivalent to &mystring[0], and mystring[mystring.size()] is guaranteed to be '\0'.