Это действительно не имеет ничего общего с векторами.
A char*
- указатель, который может указывать или не указывать на допустимые строковые данные.
A std::string
- это класс строк, инкапсулирующий все необходимые данные, составляющие строку, а также функции выделения и освобождения.
Если вы храните std::string
в векторе или где-либо еще, тогда все будет просто работать .
Если вы храните указатели на символы, вы должны выполнить всю тяжелую работу по выделению и освобождению памяти и обеспечению того, чтобы указатели всегда указывали только на значащие строковые данные, определяли длину строк и т.
И так как char*
ожидаются многими API C, а также частью стандартной библиотеки C ++, класс string
имеет функцию c_str()
, которая возвращает char*
.