Объединение строк с помощью оператора +

std::cout << "Please enter your first name: ";
std::string name;
std::cin >> name;
// build the message that we intend to write
const std::string greeting = "Hello, " + name + "!"; //LineA
std::cout << greeting;

ПРОИЗВОДИТ:

Здравствуйте, anyname_given!

Но когда я меняю "LineA" на

const std::string greeting = "Hello, " + "Hello " + "!";

выдает ошибку

HelloWorld.cpp:34:42: ошибка: недопустимые операнды типов 'const char [8]' и 'const char [6]' для двоичного 'operator+'
const std::string Greeting = "Привет," + " Привет" + "!";

Почему говорят, что недопустимые типы операндов?


person krishna kumar nokha    schedule 23.10.2015    source источник
comment
поскольку Hello не является std::string   -  person Balu    schedule 23.10.2015
comment
но @Prakash в первом случае тоже Привет, это не std::string   -  person krishna kumar nokha    schedule 23.10.2015
comment
@krishna В последнем случае нет объекта std::string для оценки оператора + .. вы пытаетесь добавить массивы символов ..   -  person Balu    schedule 23.10.2015
comment
тогда вы говорите, что для оценки должен быть хотя бы один строковый тип операнда. Что насчет этого случая @Prakash Hello,+World+name;   -  person krishna kumar nokha    schedule 23.10.2015
comment
выражения оцениваются слева направо. Hello,+ World оценивается, а затем пытается добавить имя.. но поскольку Hello и World являются операторами массивов символов +, не может оценить...   -  person Balu    schedule 23.10.2015


Ответы (1)


std::operator+ можно применять к объектам std::string, но не к char[]..

"Здравствуйте" - это массив символов.

Вы можете сделать следующее, чтобы добавить,

 std::string hello = "Hello ,";
 std::string greeting = hello + name ;
person Balu    schedule 23.10.2015