Я новичок в C ++, я столкнулся с этой странностью с присваиванием const std :: string
Это отлично работает:
const std :: string hello = «Hello»;
const std :: string message = hello + «world»;
Это дает ошибку компилятора:
const std :: string message = «Hello» + «world»;
Я не понимаю, почему это, кто-нибудь?
Спасибо
Здесь нет operator +
определено, что занимает два указателя типа const char*
и возвращает новый массив символов, содержащий конкатенацию строк, на которые они указывают.
Что вы можете сделать, это:
std::string message = std::string("Hello") + "world";
Или даже:
std::string message = "Hello" + std::string("world");
Чтобы объединить буквенные строки, вам не нужно ставить дополнительные +
между ними просто соедините их без оператора, который выполнит объединение:
std::string message = "Hello" "world";
printf("%s\n", message.c_str());
и приведенный выше код даст вам:
Helloworld