Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Eingabe auf Int ü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
07.12.2004, 10:28 Uhr
~Steffie
Gast


Hallo Forum,

ich lass in meinem Programm verschiedene INT-Werte eingeben und würde gerne prüfen ob diese auch wirklich eingegeben wurden und nicht ein char oder so was …?
Wie kann ich das denn am besten lösen ?

C++:
While(!int)


geht ja leider nicht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.12.2004, 10:36 Uhr
virtual
Sexiest Bit alive
(Operator)


1. Möglichkeit (C)

C++:
int wert;
if (scanf("%d", &wert)!=1) {
    printf("Kein int eingegeben!\n");
}
else {
    printf("Toll, Dein Int lautet: %d\n", wert);
}


2. Möglichkeit (C++)

C++:
int wert
std::cin>>wert;
if (!cin) {
    std::cout<<"Kein int eingegeben!"<<std::endl;
    sdt::cin.clear();
}
else {
    std::cout<<"Toll, Dein Int lautet: "<<wert<<std::endl;
}


Darüber hinaus gibt es 1001 weitere Möglichkeiten herauszubekommen, ob eine Eingabe korrekt war
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.12.2004, 10:44 Uhr
(un)wissender
Niveauwart



C++:

while(!std::cin.fail())
{
   int test;
   std::cin >> test;
}




Am Ende (Wenn fail() == true) std::cin mit clear() und std::getline wieder bereit machen...


Bearbeitung:

Zu langsam...


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 07.12.2004 um 10:45 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.12.2004, 10:54 Uhr
~Steffie
Gast


@virtual

Vielen Dank!

An ein einfaches !cin hab ich gar nicht gedacht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.12.2004, 18:45 Uhr
typecast
aka loddab
(Operator)


Im Fehlerfall wuerde es sich anbieten, die noch nicht gelesenen Zeichen aus dem Stream zu entfernen:


C++:
int wert;
std::cin>>wert;
if (!std::cin) {
    std::cout<<"Kein int eingegeben!"<<std::endl;
    std::cin.clear();
    std::cin.ignore(INT_MAX, '\n');
}
else {
    std::cout<<"Toll, Dein Int lautet: "<<wert<<std::endl;
}


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.12.2004, 19:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:


C++:
std::cout<<"Toll, Dein Int lautet: "<<wert<<std::endl;




in einer zu verkaufenden anwendung muss hier natürlich der nutzer nicht freundlich auf seinen fehler hingewiesen sondern unter verwendung aller einem einfallenden wüsten beschimpfungen zur sau gemacht werden... schliesslich musste man wegen genau diesem idioten auch diesen fehlerfall abfangen lassen und erheblichen mehraufwand in der programmierung hinnehmen... das sollte man den user auch spüren lassen
--
...fleißig wie zwei Weißbrote
 
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: