Strumienie walidacja

0

Czy istnieją jakieś metody do "cin" które sprawdzają mi czy nie został przekroczony zakres zmiennej czy nie doszło do nie jawnej konwersji (wczytuje do zmiennej typu int float).Tak jak np cin.rdstate() które używam do sprawdzania czy nie wczytałem do int'a char'a.
Może nie tędy droga i może "cin" rzuca jakieś wyjątki jak np.Convert w C#??

0

Jeżeli coś w strumieniu było nieprzewidzianego, to po prostu ustawia się flaga błędu (już nie pamiętam jaka) i wszystkie inne operacje wczytania kończą się niepowodzeniem aż do wyczyszczenia flagi błędu. Jeżeli podasz za dużego inta, to po prostu go nie wczyta i ustawi tę flagę. Jeżeli np. podasz liczbę z częścią dziesiętną, to wczyta tylko część całkowitą zostawiając .coś na końcu i będzie z tego zadowolony, dopiero problem może się pojawić przy następnej operacji wczytania.

Możesz ustawić też cina, żeby rzucał wyjątkami jak wczytanie się nie powiedzie.

Można łatwo sprawdzić, czy cin dobrze wczytał poprzez np. if (cin>>zmienna).

1 użytkowników online, w tym zalogowanych: 0, gości: 1