Money Making Machinist Geschrieben 4. Januar 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 4. Januar 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 4. Januar 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Money Making Machinist Geschrieben 5. Januar 2005 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 5. Januar 2005 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Money Making Machinist Geschrieben 5. Januar 2005 Autor Teilen Geschrieben 5. Januar 2005 Hey danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.