Kezdőoldal » Számítástechnika » Programozás » C++ban hogyan ellenőrizzel,...

C++ban hogyan ellenőrizzel, hogy az txt fájlból int az input?

Figyelt kérdés

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)



2020. ápr. 27. 19:38
 1/7 anonim ***** válasza:
0%
Te egy stringet akarsz dobatni vele nem exceptiont, csak utóbbit lehet.
2020. ápr. 27. 19:58
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
100%

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.

2020. ápr. 28. 00:52
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

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.

2020. ápr. 28. 12:30
 4/7 anonim ***** válasza:

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.

2020. ápr. 28. 14:23
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:
2020. ápr. 29. 00:42
 6/7 A kérdező kommentje:

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 :)

2020. ápr. 29. 00:43
 7/7 anonim ***** válasza:

Hát igen.

A feltételed nem jó, && helyett || kellene.

2020. máj. 1. 00:25
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!