Wort aus String heraus bekommen
-
okay, ich schau mal... vllt. steht ja da auch gleich wie ich ne Datei öffnen kann deren name ich vorher in nem string gespeichert habe...
-
hmmm... hab nen ziemlich komischen Fehler...
also, ich hab das jetzt halbwegs gerallt mitm Dateihandling, aber es gibt noch Problem.
Wenn ich in nen String "\index.html" schreibe, dann gibts nen Fehler (weil er kein \i kennt).
So, also denke ich mir "\\index.html" nur da findet er die Datei nicht (obwohl ers mit cout richtig ausgibt).
So, dann öffne ich die Datei direkt so: "ifstrem in("\index.html")" und es geht!Kann mir da einer weiterhelfen?
Gruß
AuronP.S.: mir fällt grad auf, ich schreibe öfters "er", damit meine ich den Computer ^^
-
wenn die datei im gleichen verzeichnis liegt:
string dateiname="index.html"; ifstream in(dateiname.c_str(), ios::in);
wenn sie woanders liegt:
string dateiname="..\\index.html"; //oder string dateiname="deinordner\\index.html"; //oder unter linux string dateiname="../index.html";
-
hmmm... also, wenn das mal so einfach wäre...
if(client.find("GET",0) != string::npos) { int last = client.find(" ",4); client.copy(churl,last-4,4); for(int i=0;i<strlen(churl);++i) url.append(1,churl[i]); if(url=="/") url = "\\index.html"; //DIE 1. ZEILE HIER else { while(found!=string::npos) { found = url.find("/",0); if(found == string::npos) break; url.replace(found,1,"\\"); //UND DIE 2. ZEILE HIER };// / zu \ Replace-Loop };//falls kein index.html };//GET von Browser
so, das isn auszug...
also, wenn ich das so habe wie oben, dann gehts nicht (findet er nicht, obwohls mit cout richtig "aussieht").
wenn ich nun in der 1. Zeile schreibe:url = "\index.html";
dann kann ich die indexseite aufrufen lassen, allerdings kann ich keine unterverzeichnisse und andere dateien nutzen.
wenn ich zusätzlich auch noch in der 2. Zeile das \\ durch nen \ ersetze, beschwert er sich plötzlich über das "\index.html" (unbekannte escape-sequenz) und auch über das "\" in zeile 2.Kannst du mir erklären was dieses "merkwürdige" Problem auslöst?
-
Du musst es auf jeden Fall mit zwei Backslashes (\) schreiben. Ich glaube eher, dass die weitere Verwendung Probleme macht. Was passiert danach mit url??
-
ifstream in(url.c_str());
das ist alles.
edit: Elise hat mich grad auf ne Idee gebracht, scheint zu funzen... ich probiers gleich nochmal ausgiebig...
".\\index.html"
jo, geht wunderbar.... ein einfacher . arg! verdammt!
-
Achso verstehe. Du wolltest die Datei im aktuellen Pfad öffnen. "\\index" bedeutet, dass sich die Datei auf der Root befinden muss.
-
jo... allerdings frag ich mich waums unter bestimmten UMständen mit \index.html ging.
-
Ganz einfach:
\ ist ein Escapezeichen, d. h. die Zahl oder der Buchstabe direkt dahinter wird anders interpretiert. Kann der Buchstabe nicht interpretiert werden wird er einfach ausgegeben als hätte es das \ davor nicht gegeben. In deinem Fall wäre dann "\index.html" = "index.html", verstanden?
-
jojo...
die Frage is zwar net beantworter aber das würde jetzt auch zu weit gehen ^^