Problem z std::cout.good(); i std::cout.fail();
Ostatnio zmodyfikowano 2017-09-28 21:04
MecQuick Temat założony przez niniejszego użytkownika |
Problem z std::cout.good(); i std::cout.fail(); » 2017-09-28 20:42:57 Dzień dobry, mam problem z takim wycinkiem kodu: #include <conio.h> #include <Windows.h> #include <iostream>
int main() { int a, b; float c; std::cout << "Podaj pierwsza liczbe: "; std::cin.clear(); std::cin.sync(); std::cin >> a; bool czySukces1 = std::cin.good(); std::cout << "Podaj druga liczbe: "; std::cin.clear(); std::cin.sync(); bool czySukces2 = std::cin.good(); std::cin >> b; std::cout << "Podaj trzecia liczbe: "; std::cin.clear(); std::cin.sync(); bool czySukces3 = std::cin.good(); std::cin >> c; std::cout << "Liczba pierwsza to: " << a << ". " << "Czy wczytano?: " << czySukces1 << ". "; std::cout << "Liczba druga to: " << b << ". " << "Czy wczytano?: " << czySukces2 << ". "; std::cout << "Liczba trzecia to: " << c << ". " << "Czy wczytano?: " << czySukces3 << ". "; _getch(); return 0; }
gdyż zwraca to: Podaj pierwsza liczbe: cos Podaj druga liczbe: Podaj trzecia liczbe: Liczba pierwsza to: -858993460. Czy wczytano?: 0. Liczba druga to: -858993460. Czy wczytano?: 1. Liczba trzecia to: -1.07374e+08. Czy wczytano?: 1.
jakieś pomysły? nie chcę iść dalej bez takiej wiedzy a robienie w pętlach czy w funkcjach (jak to na innych forach robią) nie widzi mi się, gdyż, no powinno być to wykonalne bez. |
|
YooSy |
» 2017-09-28 20:51:14 sync() nie działa (nie służy do opróżniania bufora strumienia). Używaj ignore().
Bodajże efekt uboczny sync przeminął wraz z VS2015. |
|
Kinexity |
» 2017-09-28 21:04:22 używaj cin.ignore(numeric_limits<streamsize>::max(), '\n') zamiast cin.sync() |
|
« 1 » |