Это зависит от того, что вы делаете, и что делают функции интерфейса.С одной стороны, я не думаю, что кто-то порекомендует преобразовать строковый литерал в std::string
, просто чтобы вы могли вызвать c_str
для него.С другой стороны: любой код, строящий строки динамически, должен использовать std::string
.Такие функции, как strcpy
и strcat
, являются приглашением к переполнению буфера.Между двумя это зависит.Я бы сказал, что критерии должны быть простыми и безопасными: в любое время проще или безопаснее использовать std::string
, используйте std::string
.Пока то, что вы делаете, не требует динамического выделения char[]
, и такие вещи, как operator+
в строках, не будут использоваться, вы можете использовать char[]
.