El std::string
operator+
hace concatenar dos std::string
s. Sin embargo, su problema es que "concatenate"
y "this"
no son dos std::string
s; son del tipo const char []
.
Si desea concatenar los dos literales "concatenate"
y "this"
por cualquier razón (por lo general por lo que se puede dividir cadenas a través de múltiples líneas) que hace:
string someVariable = "concatenate" " this";
y el compilador dará cuenta de que en realidad se quiere string someVariable = "concatenate this";
Si "concatenate"
y "this"
se almacena en std::string
s entonces la siguiente es válida:
string s1 = "concatenate";
string s2 = " this";
string someVariable = s1 + s2;
O
string s1 = "concatenate";
string someVariable = s1 + " this";
O incluso
string someVariable = string("concatenate") + " this";
Dónde " this"
habrá automáticamente convertidos en un objeto std::string
cuando operator+
se invoca. Para que esta conversión tenga lugar al menos uno de los operandos debe ser ser del tipo std::string
.
'+' operador por defecto concatena std :: cadena. ¿Qué nuevo estás tratando de hacer? [operador + documentación] (http://www.cplusplus.com/reference/string/operator+/) – Mahesh
Aaah. Me lo perdí. Eso no apareció en ninguno de los mejores resultados para "cadena de concatenación de C++". Entonces, ¿eso funciona con literales? – trusktr
No. Para que el operador '+' funcione al menos un operando debe ser de tipo 'std :: string'. En su caso, ambos son de tipo 'const char *' como dijo @AusCBloke. – Mahesh