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; }