Wort aus String heraus bekommen



  • 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ß
    Auron

    P.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 ^^


Anmelden zum Antworten