Veröffentlicht 4. Januar 200520 j 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'; }
4. Januar 200520 j 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.
4. Januar 200520 j 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:)
5. Januar 200520 j 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
5. Januar 200520 j 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.