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

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

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

#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 указатели. Вместо этого ты!--8-->нужно для преобразования по меньшей мере одного из 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);