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

[C++] while(!(cin>>zmienna)) - co robi ten zapis?

Ostatnio zmodyfikowano 2013-05-19 22:29
Autor Wiadomość
Monster
Temat założony przez niniejszego użytkownika
[C++] while(!(cin>>zmienna)) - co robi ten zapis?
» 2013-05-19 21:37:36
A więc tak jak w temacie proszę kogoś o wyjaśnienie mi kodu, którego używam w kalkulatorze:

C/C++
float b; // Zmienna o nazwie b
while( !( cin >> b ) ) // cin>>b Prosi o wpisanie cyfry użytkownika a while(nie wiem)
{
    cout << "Prosze wpisac liczbe!" << endl; // Tekst, który się wyświetla
    cin.clear(); // Nie wiem
    cin.sync(); // Nie wiem
}


Z góry thx :)
P-83357
sofisti19
» 2013-05-19 21:43:28
Lepiej było napisać posta, niż wklepać nazwy poszczególnych funkcji do google'a? Lenistwo na najwyższym poziomie.
P-83358
Monster
Temat założony przez niniejszego użytkownika
» 2013-05-19 21:50:52
Nie lenistwo, już szybciej znalazłem takie coś:

C/C++
int zmienna;
while( !( cin >> zmienna ) ) //dopóki strumień jest w stanie błędu -> dopóki podawane są błędne dane
{
    //ew komunikat błędu
    cin.clear(); //kasowanie flagi błędu strumienia
    cin.sync(); //kasowanie zbędnych znaków z bufora
}
//tutaj na pewno wczytano poprawne dane do zmienna
 
Tylko, że nie rozumne tego wytłumaczenia ;/
P-83360
pekfos
» 2013-05-19 22:29:05
Jedyne czego możesz tu nie zrozumieć, to
while( !( cin >> zmienna ) )
.
Operacje na strumieniu operatorami << i >> zwracają referencję na ten strumień. Strumień jest rzutowalny na typ
bool
 i oznacza wtedy wartość
!fail()
 dla tego strumienia. Warunek
!( cin >> zmienna )
 jest więc spełniony tak długo, jak długo wprowadzane dane są nieprawidłowe.
P-83367
« 1 »
  Strona 1 z 1