Конкатенация строк не работает должным образом

Я знаю, что это распространенная проблема, но, глядя на ссылки и другие материалы, я не нахожу четкого ответа на этот вопрос.

Рассмотрим следующий код:

#include <string>

// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;

Компилятор говорит мне, что не может найти перегруженный оператор для char[dim].

Означает ли это, что в строке нет оператора +?

Но в нескольких примерах есть такая ситуация. Если это не правильный способ конкатцировать больше строк, что лучший способ?

Ответ 1

Ваш код, как написано, работает. Вероятно, вы пытаетесь достичь чего-то несвязанного, но похожего:

std::string c = "hello" + "world";

Это не работает, потому что для С++ это похоже на попытку добавить два указателя char. Вместо этого вам нужно преобразовать хотя бы один из char* литералов в std::string. Либо вы можете сделать то, что уже было опубликовано в вопросе (как я сказал, этот код будет работать), либо вы выполните следующее:

std::string c = std::string("hello") + "world";

Ответ 2

std::string a = "Hello ";
a += "World";

Ответ 3

Я бы сделал это:

std::string a("Hello ");
std::string b("World");
std::string c = a + b;

Что компилируется в VS2008.

Ответ 4

std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);