Ich habe eine private Klassenvariable, char name[10]
zu der ich die .txt
Erweiterung hinzufügen möchte, damit ich die im Verzeichnis vorhandene Datei öffnen kann.
Wie gehe ich vor?
Es ist vorzuziehen, eine neue Zeichenfolgenvariable zu erstellen, die die verkettete Zeichenfolge enthält.
Da es C ++ ist, warum nicht
std::string
statt verwendenchar*
? Verkettung wird trivial sein:quelle
operator+=
sowohl eine Freigabe als auch eine Zuweisung durchgeführt wird. Heap-Zuweisungen gehören zu den teuersten Vorgängen, die wir normalerweise ausführen.Wenn Sie in C programmiert haben und davon ausgehen, dass es sich
name
tatsächlich um ein Array mit fester Länge handelt, wie Sie sagen, müssen Sie Folgendes tun:Sie sehen jetzt, warum jeder empfiehlt
std::string
?quelle
Es gibt eine strcat () - Funktion aus der portierten C-Bibliothek, die die Verkettung von "C-Stil-Zeichenfolgen" für Sie übernimmt.
Übrigens, obwohl C ++ eine Reihe von Funktionen für den Umgang mit Zeichenfolgen im C-Stil hat, könnte es für Sie von Vorteil sein, wenn Sie versuchen, eine eigene Funktion zu entwickeln, die dies tut, etwa:
...und dann...
... das Ergebnis davon ist
file_name.txt
.Sie könnten auch versucht sein, Ihre eigenen zu schreiben,
operator +
jedoch werden IIRC-Operatoren nur mit Zeigern überladen, da Argumente nicht zulässig sind.Vergessen Sie auch nicht, dass das Ergebnis in diesem Fall dynamisch zugewiesen wird. Sie können daher delete aufrufen, um Speicherverluste zu vermeiden, oder Sie können die Funktion so ändern, dass ein vom Stapel zugewiesenes Zeichenarray verwendet wird, vorausgesetzt, es hat natürlich eine ausreichende Länge.
quelle
strncat()
Funktion, die normalerweise eine bessere Alternative iststrncat
ist hier irrelevant, da wir die Länge des zweiten Parameters bereits kennen".txt"
. So wäre es einfachstrncat(name, ".txt", 4)
, was uns nichts bringt.Mit strcat (Ziel, Quelle) können zwei Zeichenfolgen in c ++ verkettet werden.
Um ein tiefes Verständnis zu haben, können Sie unter folgendem Link nachschlagen:
http://www.cplusplus.com/reference/cstring/strcat/
quelle
Es ist besser, eine C ++ - Zeichenfolgenklasse anstelle einer alten C-Zeichenfolge zu verwenden. Das Leben wäre viel einfacher.
Wenn Sie eine Zeichenfolge im alten Stil haben, können Sie diese in eine Zeichenfolgenklasse umwandeln
quelle
C ++ 14
Antwort auf die Frage:
quelle
quelle