Преобразование довольно просто:
std::vector<char*> ugly_vector = get_ugly_vector();
std::vector<std::string> nice_vector(ugly_vector.begin(), ugly_vector.end());
Однако, как только вы это сделаете, вам все равно нужно убедиться, что объекты, на которые указывают указатели в ugly_vector
, правильно уничтожены. То, как вы это сделаете, зависит от старого кода, который вы используете.