Wenn ich konvertieren ein char*
-std::string
den Konstruktor:C++: Kopiert char Zeiger auf Std :: String-Konvertierung den Inhalt?
char *ps = "Hello";
std::string str(ps);
Ich weiß, dass std Behälter neigen dazu, Werte zu kopieren, wenn sie sie zu speichern, werden gebeten. Wird die ganze Zeichenfolge kopiert oder nur der Zeiger? Wenn ich danach str = "Bye"
mache Ändere ps auf "Bye" zu zeigen?
sie haben Zuweisungsoperatoren überladen und tatsächlich, wenn ich richtig rate, würden sie kopieren und Swap-Algorithmus verwenden. und ein temporäres String-Objekt wird aus char * erstellt. –
@Koushik: Sie raten falsch. Eine seichte Kopie wäre hier nicht intuitiv und fehleranfällig. –
@VioletGiraffe ja ich weiß, der Zeiger wird nicht kopiert und es gibt eine tiefe Kopie und es sollte ein interner Puffer sein, um dies zu halten. –