Там \0 окончание, а размер от компилятора зависит.
string - это класс с динамическим массивом char. Размер string (точнее, текущая емкость - размер считается по количеству находящихся в массиве символов, хотя сама переменная обычно будет занимать намного больше места - как и в Паскале для любой строки по умолчанию выделяется 256 байт, а сколько помещено в нее символов, хранится в нулевом байте строки - но в C++ конструкция string еще намного сложнее) будет зависеть от содержания и увеличивается при необходимости скачками. Когда и какими, определяется разработчиком компилятора.
от я сильно сомневаюсь, что там храниться массив char =)) как минимум, это шаблон, и может быть не только 8ми битным чаром, но wchar_t, к примеру. да и где ты видел такие ибанутые классы, в которых храниться сам массив, а не указатель на него? так что, sizeof тебе ответа не даст. вернее, длину строки он не посчитает и на размер элемента не умножит.