char* verbinden mit char*
-
Hallo, wie kann ich 2 variablen vom typ char* verbinden? -> Garnich! ?!?
wie würdet ihr folgendes problem lösen:xyzfunktion(char* Datei)
Mit string währe es ja kein problem... aber die funktion erwartet eben char*
z.B.
char *path = "c:\\blub"; char *datei = "huhu.txt"; xyzfunktion(path+"\\"+datei); // geht natürlich nicht. aber wie macht man sowas?
-
std::strcat()
-
char *path = "c:\\blub"; char *datei = "huhu.txt"; xyzfunktion(path+"\\"+datei); // geht natürlich nicht. aber wie macht man sowas?
char *filename = new char[strlen(path) + 1 + strlen(datei) + 1]; strcpy(filename, path); strcat(filename, "\\"); strcat(filename, datei); xyzfunktion(filename); delete[] filename;
Das ist noch nicht maximal performant, aber es funktioniert und reicht für deinen Zweck. Als Übung kannst du noch den «Schlehmil» entfernen
-
MeisterMichi schrieb:
Mit string währe es ja kein problem... aber die funktion erwartet eben char*
und, warum dann keinen std::string nehmen?
string str1 = "c:\\blub"; string str2 = "\\"; string str3 = "huhu.txt"; string str4 = str1 + str2 + str3; xyzfunktion(str4.c_str());
-
xyzfunktion(path+"\\"+datei); // geht natürlich nicht. aber wie macht man sowas?
xyzfunktion(string(path)+"\\"+datei); // geht natürlich. denn so macht man sowas!
-
hay, das sind ja gleich 4 antworten auf einmal
danke euch
damit kann ich arbeiten
-
Ich würde dir allerdings strncpy/strncat empfehlen, da es sicherer ist. Oder noch besser: snprintf.
-
Oh, Fehler in meiner Antwort:
xyzfunktion((string(path)+"\\"+datei).c_str()); // geht natürlich. denn so macht man sowas!
und das ist mindestens genauso sicher, wie strncpy und Konsorten.
-
Ja, das würde ich sogar vorziehen. Aber ich weiss ja nicht, ob er string überhaupt benutzen darf. Außerdem meinte ich auch eher strncpy/strncat statt strcpy/strcat.
-
Dass die n-Funktionen sicherer sind ist auch nur ein Allgemeinplatz.
-
CarstenJ schrieb:
Ja, das würde ich sogar vorziehen. Aber ich weiss ja nicht, ob er string überhaupt benutzen darf.
Warum soll er string nicht benutzen dürfen?
-
Bashar schrieb:
Dass die n-Funktionen sicherer sind ist auch nur ein Allgemeinplatz.
Hä?
Jover schrieb:
Warum soll er string nicht benutzen dürfen?
Woher soll ich das wissen?
-
CarstenJ schrieb:
Bashar schrieb:
Dass die n-Funktionen sicherer sind ist auch nur ein Allgemeinplatz.
Hä?
Die n Varianten können Sinnvoll sein - aber um ehrlich zu sein, ich habe sie fast nie verwendet. Weil ich einfach immer weiss wie groß meine strings sind - und wenn nicht, kann ich mit strlen() nachsehen
-
Ich würde dir allerdings strncpy/strncat empfehlen, da es sicherer ist. Oder noch besser: snprintf.
Seit Wann ist eine C-Funktion sicherer als eine string-Methode?
MfG MAV
-
Seit Wann ist eine C-Funktion sicherer als eine string-Methode?
Lol..ist ja mal wieder nen geiler Thread. Ich würde dir empfehlen, vorher mal alles zu lesen und zu verarbeiten, statt einfach Irgendwas zu posten.
-
CarstenJ schrieb:
Hä?
Nur so dahergesagt, weil es im Allgemeinen mit den herkömmlichen Funktionen mehr Sicherheitsprobleme gibt. Das heißt ja nicht, dass man automatisch sicherer wird, wenn man die n-Funktionen verwendet. Schon gar nicht hier in diesem Beispiel.