C ++ const std :: string назначение ошибки, если правая сторона содержит конкатенацию строковых литералов

Я новичок в C ++, я столкнулся с этой странностью с присваиванием const std :: string

Это отлично работает:
const std :: string hello = «Hello»;
const std :: string message = hello + «world»;

Это дает ошибку компилятора:
const std :: string message = «Hello» + «world»;

Я не понимаю, почему это, кто-нибудь?

Спасибо

1

Решение

Здесь нет operator + определено, что занимает два указателя типа const char* и возвращает новый массив символов, содержащий конкатенацию строк, на которые они указывают.

Что вы можете сделать, это:

std::string message = std::string("Hello") + "world";

Или даже:

std::string message = "Hello" + std::string("world");
2

Другие решения

Чтобы объединить буквенные строки, вам не нужно ставить дополнительные + между ними просто соедините их без оператора, который выполнит объединение:

std::string message = "Hello" "world";
printf("%s\n", message.c_str());

и приведенный выше код даст вам:

Helloworld
1

По вопросам рекламы ammmcru@yandex.ru