Здравствуйте, ntp, Вы писали:
ntp>Почему?
предположу, что для гибкости и это вписывается в идеологию плюсовых строк
вообще, нулевой терминальный символ есть только в си-строках
в std::string нет такого элемента (пробегитесь от begin до end и вы не найдете нулевого символа в простых строках)
дополнительно есть возможность хранить в std::string нулевые символы
std::string s(10, '\0'); // строка их 10 нулевых символов
в си-строках терминальный ноль имеет определенную семантику, по нему можно определить длину строки. а в std::string этот символ не несет семантики, а в c_str() его добавляют лишь для обратной совместимости с си