Wpływ std::cin.ignore() na std::cout
Ostatnio zmodyfikowano 2018-10-12 18:05
czarekgr Temat założony przez niniejszego użytkownika |
Wpływ std::cin.ignore() na std::cout » 2018-10-12 16:54:41 Witam. Fajny jest ten kurs, próbowałem wczytywać liczby w pętli z cin. No i dziwna sprawa, użycie cin.ignore() (dałem tak na wszelki wypadek), powoduje, że cout nie wypisze komunikatu. Czy cin i cout mają wspólny bufor, z czego to może wynikać? Programik taki: #include <iostream> #include <limits> int main() { int a = 0; float b; bool blad; do { std::cout << "\n\nPodaj liczbę całkowitą:"; std::cin >> a; blad = std::cin.fail(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } while( blad ); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); do { std::cout << "\n\nPodaj liczbę rzeczywistą:"; std::cin >> b; blad = std::cin.fail(); std::cin.clear(); std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' ); } while( blad ); std::cout << "a =" << a << "\n"; std::cout << "b =" << b << "\n"; return 0; }
|
|
YooSy |
» 2018-10-12 18:05:38 Gdy bufor strumienia wejściowego jest pusty, to ignore czeka na wprowadzenie czegokolwiek do zignorowania.
Użyj instrukcji warunkowej i sprawdź przed oczyszczaniem strumienia, czy jest potrzebne.
Naciśnięcie choćby enter posunie program dalej. |
|
« 1 » |