In C ++ ist es am einfachsten, die Klasse std :: string anstelle von char * zu verwenden.
%Vor%Die Zeile "b = a;" macht dasselbe, was Sie normalerweise mit strcpy tun würden.
Ich habe dies in den obigen Kommentar eingefügt, aber um den Code lesbar zu machen:
%Vor% Wenn Sie also das Verhalten von strcpy
tatsächlich nachahmen möchten, müssen Sie es mit c_str()
;
AKTUALISIEREN
Es sollte beachtet werden, dass der C ++ 11-Standard explizit das gemeinsame Kopieren-beim-Schreiben-Muster verbietet, das in vielen Implementierungen von std::string
zuvor verwendet wurde. Reference-Count-Strings sind daher nicht mehr erlaubt und das folgende erzeugt eine Kopie:
Wenn Sie C ++ - Zeichenfolgen verwenden, verwenden Sie einfach den Kopierkonstruktor:
%Vor%des Zuweisungsoperators
%Vor%Wenn Sie C-Style-Strings verwenden müssen (d. h. nullterminierte Char-Arrays), dann verwenden Sie einfach strcpy oder als sicherere Alternative strncpy.
Sie werden empfohlen, strcpy_s zu verwenden, da zusätzlich zu den Ziel- und Quellargumenten ein zusätzliches Argument für die Größe des Zielpuffers vorhanden ist, um einen Überlauf zu vermeiden. Dies ist jedoch immer noch der schnellste Weg, um eine Zeichenkette zu kopieren, wenn Sie char-Arrays / -Zeiger verwenden.
Beispiel:
%Vor%