std::cin.ignore(); wird ignoriert ...



  • Hi ...

    ich hab bis jetzt immer std::cin.ignore(); benutzt wenn ich verhindern wollte das ein Programm sofort beendet wird (und damit die Console in Win2k).

    Jetzt hab ich mal ein "etwas komplexeres" Programm geschrieben und seit dem wartet das Programm bei std::cin.ignore(); nicht mehr auf ein Enter ... aber system("PAUSE"); funzt (ich weiß, den Ausdruck gibts nur in Windows/DOS).

    Wenn ich zweimal std::cin.ignore(); schreibe funzt es wieder ...

    naja ich hab den Source Code mal hochgeladen:
    http://mitglied.tripod.de/procyonthedragon/cpp/schraubenschluessel/main.cpp
    (mit 2x std::cin.ignore(); ... mein Compiler ist MinGW 2.0.0-3 mit dem Bloodshed Dev-C++ 5 Beta)

    Ich hoffe ihr könnt mir helfen wie ich das in den Griff kriege ...

    [EDIT]
    Ich hab gerade mal die exe zu dem Programm hochgeladen damit ich sie morgen im Informatikunterricht zeigen kann ... wieso ist ein so einfaches Programm trotzdem so groß (440 KB) ?! Wie krieg ich es kleiner ???
    [/EDIT]

    [ Dieser Beitrag wurde am 01.04.2003 um 15:35 Uhr von Procyon editiert. ]



  • wenn der user zuletzt ne zahl oder nen einzelnen char eingeben sollte und den mit return abgeschickt hat, wird das return noch im cin stehen und beim ersten ignore gefressen, weshalb ein zweites nötig war.



  • Original erstellt von volkard:
    wenn der user zuletzt ne zahl oder nen einzelnen char eingeben sollte und den mit return abgeschickt hat, wird das return noch im cin stehen und beim ersten ignore gefressen, weshalb ein zweites nötig war.

    Tach erstmal

    kann man das auch anders "umgehen" ?

    Ich finde nämlich das ist kein vernünftiger Programmierstil ... 2 mal std::cin.ignore(); wo man normalerweise nur ein einziges braucht ...



  • sowas aber auch. irgendwie liegt heute alles, was ich suche, auch auf meiner platte rum.

    void wait ()
    {
        cin.clear();
        cin.ignore(cin.rdbuf()->in_avail());
        cin.get();
    }
    


  • Hallo,
    oder unter Verwendung einiger gcc-Compiler:

    void wait ()
    {
        cin.clear();
        cin.sync();
        cin.get();
    }
    

Anmelden zum Antworten