Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

std::cin.good() - zasada dzialania

Ostatnio zmodyfikowano 2013-07-10 21:56
Autor Wiadomość
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ś:

C/C++
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ś:

C/C++
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ę :)
P-87430
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.
P-87434
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'.
P-87450
pekfos
» 2013-07-10 21:56:58
P-87451
« 1 »
  Strona 1 z 1