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


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

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

#include <string>

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

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

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

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

4 82

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 + b;

, который компилируется в VS2008.

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