Конкатенация строк не работает должным образом
Я знаю, что это распространенная проблема, но, глядя на ссылки и другие материалы, я не нахожу четкого ответа на этот вопрос.
Рассмотрим следующий код:
#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);