Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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



}

Geschrieben

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.

Geschrieben


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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...