Money Making Machinist Geschrieben 4. Januar 2005 Geschrieben 4. Januar 2005 ch versteh das nicht! Das müsste eigentlich alles gehen, nur beim Einlesen und Ausgeben des Strings verwurschtelt er sich total. Ich habe VC6.0 (Autorenversion) benutzt. Einfach mal ausprobieren -> Dann 2 drücken -> Text eingeben -> Tada! Komplette Verwurschtelei. Ich versteh nicht warum der die Ausgabe immer und immer wieder sich neu ausgeben zu versucht und warum der String solche Probleme erzeugt. Es muss irgendwie an getline(cin,o_text) liegen. Hoffe ihr könntet mir da helfen. Danke #include <iostream> #include <windows.h> #include <string> using namespace std; void ausgabe(); //StandartAusgabe void keywahl(); //UserAufforderung(key) void textwahl(); //UserAufforderung(text) int keyist(int key); //UserInfo(key) void textist(string o_text); //UserInfo(text) void beenden(); int main() { int eingabe; int key; string o_text; string n_text; ausgabe(); anfang: cin >> eingabe; if((eingabe == 1)||(eingabe == 2)||(eingabe == 3)||(eingabe == 4)||(eingabe == 5)) { if(eingabe == 1) //Schlüsseleingabe { keywahl(); cin >> key; system("cls"); ausgabe(); keyist(key); goto anfang; } if(eingabe == 2) //Texteingabe { textwahl(); getline(cin,o_text); //Hier!!! system("cls"); ausgabe(); textist(o_text); goto anfang; } if(eingabe == 3) //Verschlüsselung { cout << "Hier sollte verschlüsselt werden" << '\n'; } if(eingabe == 4) //Neu { system("cls"); ausgabe(); } if(eingabe == 5) //Beenden { beenden(); } if(eingabe != (1 || 2 || 3 || 4 || 5 )) { system("cls"); ausgabe(); goto anfang; } } else { system("cls"); ausgabe(); goto anfang; } return 0; } void ausgabe() { cout << "/////////////////////////////////////////////" << '\n'; cout << "1: Schluessel eingeben" << '\n'; cout << "2: Text eingeben" << '\n'; cout << "3: Mit Verschlüsselung beginnen" << '\n'; cout << "4: Neu" << '\n'; cout << "5: Beenden" <<'\n'; cout << "/////////////////////////////////////////////" << '\n'; } void keywahl() { cout << "/////////////////////////////////////////////" << '\n'; cout << "///Sie muessen nun den Schlüssel eingeben!///" << '\n'; cout << "/////////////////////////////////////////////" << '\n'; } void textwahl() { cout << "/////////////////////////////////////////////" << '\n'; cout << "///Sie muessen nun den Text eingeben!////////" << '\n'; cout << "/////////////////////////////////////////////" << '\n'; } int keyist(int key) { cout << "Der gewaehlte Schluessel ist: " << key << '\n'; cout << "/////////////////////////////////////////////" << '\n'; return 0; } void textist(string o_text) { cout << "Der eingegebene Text ist: " << o_text << '\n'; cout << "/////////////////////////////////////////////" << '\n'; } /* void verschluesseln(string o_text) { cout << "/////////////////////////////////////////////" << '\n'; cout << "Die Kodierung ergab: " << '\n'; cout << mymethod(o_text) <<'\n'; //Kodierung!!! cout << "/////////////////////////////////////////////" << '\n'; } void mymethod(string o_text) { ... return n_text; } */ void beenden() { cout << "/////////////////////////////////////////////" << '\n'; } Zitieren
Klotzkopp Geschrieben 4. Januar 2005 Geschrieben 4. Januar 2005 Das Problem ist, dass nach dem Einlesen des int immer noch das Zeilenvorschubzeichen im Eingabestrom steht. Du kannst vor jedem Einlesen aus cin den Puffer leeren und die Fehlerbits zurücksetzen: cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); [/CODE] P.S.: CPP-Tags haben wir hier nicht. P.P.S.: Du solltest dir abgewöhnen, goto einzusetzen, wo es eine simple Schleife auch tut. Zitieren
Guybrush Threepwood Geschrieben 4. Januar 2005 Geschrieben 4. Januar 2005 P.P.S.: Du solltest dir abgewöhnen, goto einzusetzen, wo es eine simple Schleife auch tut. Man sollte goto überhaupt nicht einsetzten wenn die Sprache andere Möglichkeiten bietet:) Zitieren
Money Making Machinist Geschrieben 5. Januar 2005 Autor Geschrieben 5. Januar 2005 cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); Jo danke, hat auch alles geklappt. Allerdings, könntest du mir das etwas genauer erklären, zu clear() und ignore() hab ich selber was gefunden, nur zu cin.rdbuf()->in_avail() irgendwie nichts. Und was mir für die Zukunft helfen würde: Wie bist du da draufgekommen? Danke Zitieren
carstenj Geschrieben 5. Januar 2005 Geschrieben 5. Januar 2005 Hallo, eine Lösung gibts hier: http://tutorial.schornboeck.net/hello_world.htm Um darauf zu kommen muss man sich etwas mit der Materie beschäftigen, z. B. Bücher & Tutorials lesen. Das o. a. kann ich dir empfehlen. Zitieren
Money Making Machinist Geschrieben 5. Januar 2005 Autor Geschrieben 5. Januar 2005 Hey danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.