std::cin.good() - zasada dzialania
Ostatnio zmodyfikowano 2013-07-10 21:56
Raziel Temat założony przez niniejszego użytkownika |
std::cin.good() - zasada dzialania » 2013-07-10 21:21:37 Witam, Jak dokładnie działa ummmm.. to std::cin.good() ? Ale czego ja dokładniej chcę? Otóż naskrobałem sobie takie coś: do { std::cin >> a; } while( std::cin.good() == 0 );
Jednak kompilator na mnie spojrzał, postukał się w czoło i odwrócił się kręcąc głową. Po złożeniu ofiary z czasu i przegrzaniu szarych komórek zrodziło się takie coś: do { std::cin >> a; b = std::cin.good(); std::cin.clear(); std::cin.sync(); } while( b == 0 );
I tym oto sposobem dogadałem się z kompilatorem i profesjonalnie zabezpieczyłem program przed śnieżnobiałymi Yeti (czy Yetami?) I teraz pytanko: Czy std::cin.good() jest jakąś funkcją, która jest uruchamiana z automatu przy std::cin >> ? 1. Jest gdzieś dokładniej opisane jak ona działa? 2. Dlaczego przy pierwszej wersji kompilator nie dał się przekupić nawet sześciopakiem? 3. Czy można skrócić zapis wersji drugiej? Gł tak by nie trzeba było tworzyć zmiennej 'b', lub zrobic to w wygodniejszy sposób? Dęiekuję :) |
|
pekfos |
» 2013-07-10 21:29:46 Czy std::cin.good() jest jakąś funkcją, która jest uruchamiana z automatu przy std::cin >> ? |
Możliwe, ale to bez znaczenia. 1. Jest gdzieś dokładniej opisane jak ona działa? |
W dokumentacji? 3. Czy można skrócić zapis wersji drugiej? Gł tak by nie trzeba było tworzyć zmiennej 'b', lub zrobic to w wygodniejszy sposób? |
Tak, czyścić przed wczytywaniem. |
|
Raziel Temat założony przez niniejszego użytkownika |
» 2013-07-10 21:55:04 Dziekuję za odpowiedź :) . Jednak gdzie w dokumentacji jest to opisane? :( W lekcji 6 jest opisany strumień wyjścia, jednak nie ma żadnego odnośnika do dokumentacji (np tak jak do printf). W standarcie C++ znalazlem 'Strumień i pliki', ale nie ma tam 'std'.
|
|
pekfos |
» 2013-07-10 21:56:58 |
|
« 1 » |