Конкатенация строк не работает должным образом
Я знаю, что это общая проблема, но в поисках ссылок и других материалов я не нахожу четкого ответа на этот вопрос.
Рассмотрим следующий код:
#include <string>
// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;
Компилятор говорит мне, что не может найти перегруженный оператор для char[dim]
,
Значит ли это, что в строке нет оператора +?
Но в нескольких примерах есть такая ситуация. Если это неправильный способ объединить больше строк, каков наилучший способ?
4 ответа
Ваш код, как написано, работает. Вы, вероятно, пытаетесь достичь чего-то не связанного, но похожего:
std::string c = "hello" + "world";
Это не работает, потому что для C++ кажется, что вы пытаетесь добавить два char
указатели. Вместо этого вам нужно конвертировать хотя бы один из char*
литералы к std::string
, Либо вы можете делать то, что вы уже опубликовали в вопросе (как я уже сказал, этот код будет работать), либо вы делаете следующее:
std::string c = std::string("hello") + "world";
std::string a = "Hello ";
std::string b = "World ";
std::string c = a;
c.append(b);
Я бы сделал это:
std::string a("Hello ");
std::string b("World");
std::string c = a + b;
Который компилируется в VS2008.