Problem total Ratlos



  • ehrlich gesagt hab ich keine ahnung was für ne Verison von DOS ich habe aber aktuell genug damit Win2k läuft. In der Console steht was von 5.00.2195.

    #include <iostream>
    hmm, hast du wirklich keine ahnung??
    Ich möchte mich aber nochmal bedanken habe bis jetzt schon wieder viel gelernt danke nochmal!



  • Und was für Header hast du sonst noch eingebunden? Vielleicht fehlt ja nur die <string>.



  • CStoll meinte nicht dein DOS, sondern deinen Kompiler.



  • CStoll schrieb:

    Und was für Header hast du sonst noch eingebunden? Vielleicht fehlt ja nur die <string>.

    es war das #include <string>. DANKE ich bin überglücklich!! ^^



  • So ein neues Problem.. ^^ und zwar hab ich jetzt z.B. in meinem String die Zeichenkette "bet5230". Jetzt habe ich mir gedacht das ich den Einsatz aus meiner Zeichenkette raus in eine Variable Namens int money abspeichern will
    bin dann auf folgende lösung gekommen:

    int i = 3;
        while(eingabe[i]>='0' && eingabe[i]>='9')
        {
            money *=10;
            money += eingabe[i] - '0';
            i++;
        }
    

    hab mir gedacht das ich damit das bet überspringe und dann mit dem zahlenwert fortfahren kann. Doch enhält dann money nen totalen schmarrn wert.



  • qriz schrieb:

    while(eingabe[i]>='0' && eingabe[i]>='9')
    

    du meinst wohl

    while(eingabe[i]>='0' && eingabe[i][b]<=[/b]'9')
    

    ?
    ausserdem ginge es auch (vielleicht einfacher?) mit

    sscanf (eingabe+3, "%d", &money);
    

    🙂



  • Ergänzung zur ersten Frage:

    Die Arbeit mit Strings löst nun vielleicht dein Problem. Aber es wird Situationen geben, in denen du mit char vorlieb nehmen musst (bittere Erfahrung, hab ich gemacht als ich das erste mal mit WinSockets arbeitete!).

    Ich hab deine Funktion mal eben angepasst:

    void inttochar(int eingabe, char ausgabe[256]) 
    { 
    switch (eingabe) 
    { 
    case 1: 
    strcpy(ausgabe,"Kreuz 2");break;  
    case 2: 
    strcpy(ausgabe,"Kreuz 3"); break; 
    default: 
    strcpy(ausgabe,"XXX"); 
    break; 
    } 
    }
    

    Dieser Funktion übergibst du nun einfach einen Parameter mehr, indem du eine Variable speicherst mit deiner Ausgabe. etwa so:

    char location[256];
    inttochar(1,location);
    cout << location << endl;
    

    Viel Spaß damit,..

    Cfuncy()



  • Cfunc() schrieb:

    Ergänzung zur ersten Frage:

    Die Arbeit mit Strings löst nun vielleicht dein Problem. Aber es wird Situationen geben, in denen du mit char vorlieb nehmen musst (bittere Erfahrung, hab ich gemacht als ich das erste mal mit WinSockets arbeitete!).

    Selbst wenn einige Funktionen auf char* bestehen, solltest du deren Verwendung nicht über das gesamte Programm auswuchern lassen. Schreib dir lieber eine Wrapper-Funktion, die die Socket-Methoden aufruft und deren Ergebnis dann in einen std::string einlagert.

    @qriz: Hast du 'money' überhaupt vor der Schleife initialisiert?



  • jo klar is money vorher intialisiert.. xD

    das mit dem sscanf würde funktionieren wenn meine eingabe kein string währe.. xD

    Meine funktion inttokarte funktioniert mittlerweile prima ^^ danke nochmal für die antwort. 🙂

    EDIT: Ich habe den Fehler gefunden meine Schleife funktioniert, ich hätte nur die Variable Money mit 0 intialisieren sollen, so kam der Wert von meinem String mit dem Money Wert durcheinander, danke für den denkanstoß!! 🙂



  • qriz schrieb:

    das mit dem sscanf würde funktionieren wenn meine eingabe kein string währe.. xD

    Ach, das ist doch kein Hindernis - zur Not greifst du über c_str() auf das darunterliegende char-Array zu :D.

    wobei - in C++ würde ich lieber einen Stringstream nehmen:

    stringstream conv(eingabe.substr(3));
    conv>>money;
    

Anmelden zum Antworten