Разница между функциями string::erase() и string::clear() заключается в их назначении:
Таким образом, string::erase() удаляет часть строки, а string::clear() — всё её содержимое. 14
Кроме того, в общем случае string::erase() выполняет больше работы — он должен проверить, находится ли индекс в пределах диапазона, и выдать исключение, если нет, в то время как string::clear() гарантированно не выдаёт ошибку. 4