C++ban hogyan ellenőrizzel, hogy az txt fájlból int az input?
if(cin.fail)
Egy jó megoldás, de nem engedi, hogy kivételt dobjak vele.
Azaz
If(cin.fail) throw "Baj van";
Esetén ezt a hibát kapom:
'Std::ios_base::fail' non-standard syntax use & to create a pointer to member
Ezt hogyan lehet kiküszöbölni?
Meg megpróbáltam úgy ellenőrizni a bemenetet, hogy igazából csak 4 számot fogadok el, így mindegyikre feltétlet adni azaz:
if(var != 1 && var != 2 stb...) throw "valami";
Ami működik is, de csak számokkal.
Ha betűt inputot kap, akkor végtelen ciklusba kerül.
Hogy lehetne megoldani, hogy betű vagy helytelen szám esetén dobjon saját exceptiont?
(Nem akarom std::exceptions dolgot használni. Nem engedélyezett)
Nem az a baj, hanem az, hogy a cin.fail egy metódus, tehát meg kéne hívni:
if(cin.fail()) { ... }
Egyébként tényleg inkább exception-t kellene dobni. De azzal majd akkor foglalkozz, ha a többi kész.
Ohhh igen, bocsi elírtam :D
Viszont furcsa mód ha helyensen írom le, sem szűri ki a nem int inputot.
Csak egy végtelen ciklust indít.
Leírnád, hogy hol olvasol be és mit? Tedd fel az egészet pastebin-re vagy valami hasonló kódmegosztó oldalra.
A cin.fail() true, ha mondjuk integer-t akartál beolvasni, de nem azt írtad be. De a kód többi részében lehet probléma.
Előző kommentben ott a pastebin-es megosztás.
Egyenlőre csak annyit tud, hogy megfelelő számot kiválasztja, de ha betűt írok végtelen ciklusba lép.
Előre is köszi :)
Hát igen.
A feltételed nem jó, && helyett || kellene.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!