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

Problem z std::cout.good(); i std::cout.fail();

Ostatnio zmodyfikowano 2017-09-28 21:04
Autor Wiadomość
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:
C/C++
#include <conio.h>
#include <Windows.h>
#include <iostream>

// Przecwiczenie cin:fail, cin:good

int main()
{
    //zmienne
    int a, b;
    float c;
    //podanie liczb
    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;
    //wynik
    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.
P-165317
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.
P-165318
Kinexity
» 2017-09-28 21:04:22
używaj cin.ignore(numeric_limits<streamsize>::max(), '\n') zamiast cin.sync()
P-165319
« 1 »
  Strona 1 z 1