Kopieren von std::string
-
Hallo zusammen,
was macht er denn bei diesem Code intern?
std::pair<std::string, std::string> = std:pair<std::string("1"), std::string("2")>;Wird hier ein string erzeugt und
anschließend der Inhalt sofort wieder in einen neuen String kopiert
oder wird das vom Kompiler optimiert, dass er den String gleich
in dem pair erzeugt?Verändert ein const evtl etwas?
und noch ne Frage:
Kann ich einem String nachträglich eine Zeichenkette char*
zuweisen?Gruß,
*Cpp-Anfänger*
-
Du kannst make_pair verwenden, dann sieht das viel übersichtlicher aus.
Ansonsten für das char*:std::string xyz;
xyz = "xyz";
-
std::string xyz; xyz = "xyz";Kopiert das nicht wieder den Speicher?
Ich dachte an:
char* v = (char*)malloc(1024); // schreibe in std::string // Ändere Buchstaben in char* // Gib geänderten String aus // Es soll also der gleiche Speicherbereich verwendet werdenGruß,
*Cpp-Anfänger*
-
Ich verstehe dich zaw nicht richtig, aber der std::string hat intern einen eigenen zeichenbuffer, welcher dann bei Zuweisung (operator==, (Copy-)Konstruktor etc.) bschrieben wird. Du kannst also nicht sagen, dass das geht:
char ac[]="1337"; string s=ac; s[0]='2'; int i=strcmp(ac, "1337");ac wird immer noch "1337" sein, obwohl s "2337" ist.
Das geht dann natürlich auch nicht:
char ac[]="1337"; string s=ac; ac[0]='2'; bool b=(s=="1337");
-
Hallo Trundle0x7e,
du hast mich genau richtig verstanden.
Ich wollte nur wissen, ob ich diesen internen Puffer durch
meinen Speicherbereich ersetzen kann...
Reines Interesse wegen Performance.
Das hätte halt das kopieren von meinem Speicher in den
den Puffer gespart.thx