Wort aus String heraus bekommen
-
es gibt noch 2 Probleme mit der Stringklasse:
1. ich hab keine Idee wie ich nen Integer in nen String kriegen soll.
weil sowas wie
buf = "Das Ergebnis ist " + ergebnis + ".";
klappt nicht und ne passende Fkt. hab ich auch net entdeckt.
2. Wenn ich nen STring mit std::send(); senden will, dann is das kein Prob, dafür nehme ich c_str(), aber wie geht das mit std::recv();?
Auron
-
Schau dir hald mal die Dokumentation an zu string! Vielleicht gibts da ja ne Methode, die einen Integer liefert.
Zum 2. Problem:
da wirst du wohl nicht um char * herumkommen, außer c_str() liefert dir einen Zeiger, deren Inhalt du auch verändern darfst. Das dürfte auch wiederum in der Dokumentation stehen.Wenn du keine Dokumentation bei deinem Compiler dabei hast, dann kannst du auch im Internet nach einer Doku suchen. Da gibts bestimmt was. Vielleicht steht sogar schon was in der FAQ des C++-Forum zu deinem Problem.
-
ich weiß ja nicht als was du Elises Link bezeichnest...
aber zumindest habe ich keine Doku zu meinem Compiler (finden können)...
-
Sorry, hab ich übersehen.
Dann wirst du wohl rumprobieren müssen oder im C++-Forum nachfragen bzw. erst in die FAQ schauen. Ich kenn mich leider zu wenig mit string aus, um dir da konkret zu helfen. Ich frag mich eh warum du unbedingt string verwenden willst, wenn du dann doch Funktionen verwendest die mit char * arbeiten.
-
einmal string zu int/double und zurück steht im c++ faq
na ja.. AJ hat recht, du solltest dich entscheiden für entweder c oder c++..
du kannst gerne einen c++ socket herstellen, dann musst du eben für die ganzen wegschick funktionalitäten nach char array casten.
ansonsten bleibt die entscheidung dir
-
weil ich auch das andere brauche...
aber das konvertierungsprob hat sich^^
ich hab mich nur dusselig angestellt, hab jetz mal ne Minute überlegt, jetzt mach ich einfach ne for-schleife in der ich dann mit append immer nen char anhänge.Also gar kein Prob ^^
aber das mit dem Integer is noch ungelöst.
-
schau ins c++ faq
-
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 ^^