[Q]Bei Eingabe nur ganzzahlen zulassen



  • Guten Tag,

    ich habe ein Programm geschrieben bei dem ich eine Auswahl einlese,

    von 1 -4 darf der Nutzer auswählen.

    Wenn der nutzer zum Beispiel 89 oder so Eingibt ist das kein Problem, kommt eine Fehlermeldung und er muss die Eingabe wiederholen.
    Wenn er 3,16 oder ähnliches, bzw eine Eingabe mit Sonderzeichen macht, springt läuft das Programm weiter und hängt sich auf.

    Ich möchte nur Ganzzahlen erlauben.

    Ich habe was von

    SetIntEdit()
    

    gelesen, weiß aber nicht wie ich es anwenden kann.

    Vielen Dank für eure Hilfe im voraus!

    PS: Verwendet wird VS2010 C++



  • Debugge. Wenn es "hängt", verwende "Break All". Schau Dir an wo Dein Fehler ist.

    Hängt sich auf, ist etwas allgmein!



  • Nein ich möchte wissen wie ich bei einer Konsolenanwendung das SetIntEdit() anwenden kann.

    Danke!



  • Garnicht.

    Bitte!

    Du schreibst in einem anderen Thread, daß du dabei bist, C++ zu lernen. Dann tu das bitte auch und lass deine Finger gefälligst von Netzwerk und GUIs.



  • Ich verwende keine GUI?
    Ich verwende die Konsolenanwendung? 😕



  • .DVNTY schrieb:

    Ich verwende keine GUI?

    Wie kommst du dann auf die Idee irgendein SetIntEdit() zu verwenden und postest im MFC-Forum?

    Topic:

    #include <limits>
    #include <iostream>
    
    int main()
    {
    	unsigned choice;
    	while( std::cout << "Please choose one from 1 to 4: ",
    	       !( std::cin >> choice ) || choice < 1 || 4 < choice || std::cin.peek() != '\n' )
    	{
    		std::cerr << "Input error!\nPlease try again!\n\n";
    		std::cin.clear();
    		std::cin.ignore( std::numeric_limits< std::streamsize >::max(), '\n' );
    	}
    }
    


  • Da sieht man dann das ich Anfänger bin oder? 😉

    Danke für den Code, könntest du ihn noch erklären?



  • Was soll ich da groß erklären ... könntest du dir angewohnen konkrete Fragen zu stellen?

    Na egal.

    #include <limits>
    #include <iostream>
    
    int main()
    {
    	unsigned choice;  // hier soll die benutzerauswahl landen
    	while( std::cout << "Please choose one from 1 to 4: ", // Eingabeaufforderung ausgeben, solange
    	       !( std::cin >> choice ) || // kein unsigned int extrahiert werden kann, oder
    	       || choice < 1 || 4 < choice // der int auszerhalb 1...4 liegt, oder
    	       || std::cin.peek() != '\n' ) // nach dem int kein newline sondern noch anderer quatsch kommt
    	{
    		std::cerr << "Input error!\nPlease try again!\n\n"; // fehlermeldung ausgeben
    		std::cin.clear(); // eventuell gesetzte fehlerbits loeschen
    		std::cin.ignore( std::numeric_limits< std::streamsize >::max(), '\n' ); // alles noch in cin vorhandene verwerfen
    	} // nochmal von vorne.
    }
    


  • Bei dir heißt die Variable ja unsigned choice, bei mir int achterbahn.

    Muss ich Sie als unsigned deklarieren?

    Ein bisschen konkreter:
    Wo kommt dann mein ganzer Code, ich könnte ihn ja mal auf pastebin hochladen und Ihr schaut mal drüber.

    Verzeiht das ich nicht so konkret meine Fragen stelle, ich bin noch Anfänger in C++ und auch Neu in diesem Forum, deswegen entschuldigt bitte, das ich meine Beiträge in den falschen Bereich gepostet habe.



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply