Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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



}

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.


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

Hey danke :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.