Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Eingabe überprüfen!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.11.2008, 17:06 Uhr
mux




C++:
#include <iostream>
#include <time.h>
using namespace std;

int main (void)

{

int awahl, level, zufall, eingabe , versuche = 0 ;
    
    


    do

        {
               cout << "Welches Level moechten Sie spielen? (1, 2 oder 3) " ;
             cin  >> awahl ;    
               cout << endl << endl;
            
            
        } while ( (awahl < 1) || (awahl > 3));

-----------------------------------------------------------------------------



So meine Problem is nun: Ich will in der Eingabe NUR int werte annehmen!

wenn man jetzt einen double/char wert eingibt komm ich in eine endlosschleife...was bischen blöd ist. Nun will ich die eingabe und die variable "awahl" auf ihren wert überprüfen und danach entscheiden ob ich den user zu einer neuen eingabe aufforder oder ob die eine gaben einer int variable entspricht!
wie macht man sowas?


mfg MuX

p.s is ein glücksspiel programm zum zahlenraten!^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.11.2008, 17:41 Uhr
0xdeadbeef
Gott
(Operator)


Ich würde die Eingabe zeilenweise arbeiten, also etwa so:

C++:
#include <iostream>
#include <sstream>
#include <string>

int main() {
  int x;
  std::istringstream parser;
  std::string zeile;

  do {
    std::cout << "Zahl eingeben: " << std::flush;
    std::getline(std::cin, zeile);

    parser.clear();
    parser.str(zeile);

    parser >> x;
  } while(!parser);

  std::cout << "Zahl: " << x << std::endl;  
}


Das lässt sich dann auch schön in eine Funktionsvorlage packen:

C++:
template<typename t> t read_type(std::string const &prompt) {
  std::istringstream parser;
  std::string zeile;
  t x;

  do {
    std::cout << prompt << std::flush;

    std::getline(std::cin, zeile);

    parser.clear();
    parser.str(zeile);
    parser >> x;
  } while(!parser);

  return x;
}

// ...

int zahl = read_type<int>("Zahl eingeben: ");


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: