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

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

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

#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 ";
a += "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.

Другие вопросы по тегам