cin.exceptions(cin.exceptions()|ios_base::badbit);
Nie rozumiem wywołania cin.exceptions() przekazanego do cin.exceptions()
cin.exceptions(cin.exceptions()|ios_base::badbit);
Nie rozumiem wywołania cin.exceptions() przekazanego do cin.exceptions()
Pomyśl o tym jak o:
cin.exceptions |= ios_base::badbit
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
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.
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.
Ź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.
Sama idea flag, exception mask itp. nie jest mi znana.
Jakie flagi znajdowały się tam przed nadpisaniem cin.expcetions(ios_base::badbit) ?
Nie wiemy, dlatego pobieramy je za pomocą cin.exceptions()