a строковый литерал , как и "something"
, является c-строкой. Он создает const char[N]
со статической продолжительностью хранения, где N
- это количество символов плюс нулевой терминатор. Это означает, что когда вы делаете
std::vector words {"some","test","cases","here"};
, вы создали std::vector<const char*>
, так как массивы могут распадаться на указатели.
Если вы хотите std::vector<std::string>
, тогда вам нужноиспользовать std::string
пользовательский литерал . Это выглядело бы как
using namespace std::string_literals;
std::vector words {"some"s,"test"s,"cases"s,"here"s};
, и теперь у вас есть фактически std::string
s, которые компилятор будет использовать для определения типа вектора.