cin.exceptions w cin.exceptions – prośba o wytłumaczenie kodu

0
cin.exceptions(cin.exceptions()|ios_base::badbit);

Nie rozumiem wywołania cin.exceptions() przekazanego do cin.exceptions()

1

Pomyśl o tym jak o:

cin.exceptions |= ios_base::badbit
0

Niestety wiele mi to nie pomogło :(

cin.exceptions(ios_base::badbit);

czy tego typu wywołanie nie jest wystarczające?

Wiem ze a |= b to jest to samo co a = a | b ale dalej nie rozumiem tego wywołania

1

W tym wywołaniu chodzi po prostu o to, że dodajesz nową flagę (badbit) do aktualnych ustawień exceptions.

Jakbyś dał po prostu:

exceptions(failbit), to byś nadpisał poprzednie ustawienia.

0

Wydaje mi się że Patryk27 ma rację.
Może w dalszych rozdziałach książki z której się uczę będzie dokładniej wyjaśnione jak działa pote bitewe i stan flagi strumieni

Jackweb dzięki za pomoc myślę, że na ten moment te wyjaśnienie mi wystarczy.

0

Źle ci się wydaje.

porównanie @jackweb jest dobre

cin.exceptions |= ios_base::badbit

cin.exceptions(ios::badbit) to analogicznie

cin.exceptions = ios::badbit

Czyli nadpisanie wszystkich flag, zamiast dodania flagi.

0

Sama idea flag, exception mask itp. nie jest mi znana.
Jakie flagi znajdowały się tam przed nadpisaniem cin.expcetions(ios_base::badbit) ?

0

Nie wiemy, dlatego pobieramy je za pomocą cin.exceptions()

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