Sé que es un problema común, pero buscando referencias y otro material no encuentro una respuesta clara a esta pregunta.
Considere el siguiente código:
#include <string>
// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;
El compilador me dice que no puede encontrar un operador sobrecargado para char[dim].
¿Significa que en la cadena no hay un operador +?
Pero en varios ejemplos hay una situación como esta. Si esta no es la forma correcta de concanear más cadenas, ¿cuál es la mejor forma?

Respuestas:
Su código, tal como está escrito, funciona. Probablemente esté tratando de lograr algo no relacionado, pero similar:
std::string c = "hello" + "world";Esto no funciona porque para C ++ parece que estás intentando agregar dos
charpunteros. En su lugar, debe convertir al menos uno de loschar*literales astd::string. O se puede hacer lo que ya se haya publicado en la pregunta (como ya he dicho, este código será trabajar) o de hacer lo siguiente:std::string c = std::string("hello") + "world";fuente
const char[], en lugar destd::string. En C (y por lo tanto también en C ++) las matrices se convierten en punteros muy fácilmente, por lo que "a" + "b" invocará el operador incorporado que agrega dos punteros. El resultado de eso (un puntero apuntando a algún lugar de la memoria) es, por supuesto, bastante inútil, pero, sin embargo, esto es lo que nos atasca.std::string c = "Hello" "world";, por ejemplo, resultará enc == "Helloworld".std;:string c = "hello"s + "world"s;o simplemente hacer que uno de ellos sea unstd::string.std::string a = "Hello "; a += "World";fuente
Yo haría esto:
std::string a("Hello "); std::string b("World"); std::string c = a + b;Que se compila en VS2008.
fuente
std::string a = "Hello "; std::string b = "World "; std::string c = a; c.append(b);fuente