Ich weiß, dass es ein häufiges Problem ist, aber wenn ich nach Referenzen und anderem Material suche, finde ich keine klare Antwort auf diese Frage.
Betrachten Sie den folgenden Code:
#include <string>
// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;
Der Compiler teilt mir mit, dass er keinen überladenen Operator für finden kann char[dim]
.
Bedeutet das, dass es in der Zeichenfolge keinen + -Operator gibt?
In einigen Beispielen gibt es jedoch eine Situation wie diese. Wenn dies nicht der richtige Weg ist, um mehr Strings zu konzentrieren, was ist der beste Weg?
Antworten:
Ihr Code funktioniert wie geschrieben. Sie versuchen wahrscheinlich, etwas zu erreichen, das nichts damit zu tun hat, aber ähnlich ist:
Dies funktioniert nicht, da Sie in C ++ anscheinend versuchen, zwei
char
Zeiger hinzuzufügen . Stattdessen Sie müssen mindestens eine der konvertierenchar*
Literale einstd::string
. Entweder können Sie tun , was Sie bereits in der Frage gestellt haben (wie gesagt, dieser Code wird funktionieren) , oder Sie wie folgt vor :quelle
const char[]
als vom Typ sindstd::string
. In C (und damit auch in C ++) zerfallen Arrays sehr leicht in Zeiger, weshalb "a" + "b" den eingebauten Operator aufruft, der zwei Zeiger hinzufügt. Das Ergebnis davon (ein Zeiger, der irgendwo in den Speicher zeigt) ist natürlich ziemlich nutzlos, aber dennoch bleiben wir dabei.std::string c = "Hello" "world";
Dies führt beispielsweise zuc == "Helloworld"
.std;:string c = "hello"s + "world"s;
oder einfach eines davon astd::string
.quelle
Ich würde das tun:
Welche kompiliert in VS2008.
quelle
quelle