String nach for leer?



  • Hallo,
    ich hab gerade ein bisschen rumgeproggt und habe dabei ein Problem...
    Und schon vorweg: Ich bin Anfänger...
    Erstmal Code:

    #include <iostream>
    #include <string.h>
    
    using namespace std;
    
    int avg;
    string gl;
    string vg, ng;
    
    int io() {
    	getline (cin , gl);
    	avg=gl.find("=");
    	for(int i=0;i!=avg;i++) {
    		gl[i]=vg[i];
    	}
            cout << "Alles was in der Gleichung vor dem Gleich ist, ist folgendes: " << vg; 
    	return 0;
    }
    
    int main() {
    	"Geben sie jetzt bitte die Gleichung ein: ";
    	io();
    	cin.get();
    	return 0;
    }
    

    Das Ende der Ausgabe ist:

    Geben sie jetzt bitte die Gleichung ein: 0.5*(4-x)=8-2.5x
    Alles was in der Gleichung vor dem Gleich ist, ist folgendes:

    Danach endet es. Warum ist vg leer??

    Ich hoffe ihr könnt mir helfen!



  • Du veränderst vg überhaupt nicht. Kann es sein, dass du in der schleife eigentlich vg[i] = gl[i] meinst?

    Selbst das wär aber falsch, weil vg nicht lang genug ist. Ich würd einfach mit substr arbeiten.



  • Ich würde mich wundern, wo überhaupt die Stringklasse herkommt. Scheinbar bindet seine <iostream>-Version die ein.



  • der_held schrieb:

    Ich würde mich wundern, wo überhaupt die Stringklasse herkommt. Scheinbar bindet seine <iostream>-Version die ein.

    Marc A. Kastner schrieb:

    #include <iostream>
    #include <string.h>  // er hat sie doch inkludiert, wobei #include <string> besser wäre
    

    Oder habe ich da was falsches verstanden?

    EDIT: Zitierung



  • ERstens Hast du falsch Zitiert (Das solltest du bitte Korrigieren). Zweitens befindet sich in <string.h> keine Stringklasse, sondern nur Funktionen, wie strcmp, strcpy, ..., eben das, was jetzt in <cstring> zu finden ist.



  • Das sollte gehen.... !!!

    #include <iostream> 
    #include <string>
    using namespace std;
    
    #pragma warning(disable:4786)
    
    int avg; 
    string gl; 
    string vg, ng;
    
    int io()
    { 
        getline(cin , gl,' '); 
        if (-1 != (avg=gl.find("=")))
    	{
    		vg=gl.substr(0,avg);
    	}
    	cout << "Alles was in der Gleichung vor dem Gleich ist, ist folgendes: " << vg;  
        return 0; 
    } 
    
    int main(int argc, char* argv[])
    {
        cout << "Geben sie jetzt bitte die Gleichung ein: "; 
        io(); 
        cin.get(); 
        return 0;
    }
    

Anmelden zum Antworten