cout anders als printf?



  • Hallo zusammen!

    Ich habe ein paar Ausgaben in meinem Konsolenprogramm. Damit es das Fenster in VC++ nicht immer gleich schliesst habe ich vor dem Return von Main ein getchar(); geschrieben.

    Wenn ich nun cout verwende, wartet es immer zuerst die Eingabe ab, bevor es den Text schreibt, und so kann man ihn natürlich nicht lesen, da das Fenster gleich schliesst.

    Wenn ich printf benutze, funktioniert es. Warum? 😕 Wie bringe ich das Programm dazu, die cout Sachen vor dem getchar(); auszugeben?

    Grüsse CorDharel



  • Weil deine Methode schlichtweg Mist ist :), je nach Eingabemethode ist eben reinzufällig der Puffer leer oder nicht.

    Damit du nciht mehr dem Zufall überlassen bist: Konsolen-FAQ -> Automatisches Schließen verhindern

    MfG SideWinder



  • Hmm wenn ich die C++ Variante einbaue meint er

    error C2653: 'std' : is not a class or namespace name

    😞

    Was muss ich nun tun? Ich hab doch da mal was von wegen "using namespace std;" oder ähnliches gesehen 😕



  • CorDharel schrieb:

    Hmm wenn ich die C++ Variante einbaue meint er

    error C2653: 'std' : is not a class or namespace name

    😞

    Was muss ich nun tun? Ich hab doch da mal was von wegen "using namespace std;" oder ähnliches gesehen 😕

    EDIT: Hatte Mist geschrieben, du hast wahrscheinlich "std::xxx" geschrieben aber iostream.h statt iostream inkludiert.



  • öhm.. war das nich sowas wie

    cout << "blah" <<flush;
    oder
    cout << "blah" <<endl;

    ?^^



  • du musst damit du die standart bibilothek nutzen kannst, den standart anmensbereich
    angeben.
    schreib direkt unter deinen include direktiven (z.B. #include <iostream>)
    using namespace std;
    std bedeuted standart, using namespace heisst soviel wie benutze den namensbreich !
    cu 🙂



  • standard 😉



  • Juhui es funzt 😃 👍 Dankeschön!

    Aber was heisst die mittlere Zeile?

    std::cin.clear(); //inputbuffer leeren
    std::cin.ignore(std::cin.rdbuf()->in_avail()); // ?
    std::cin.get();   //warten bis input von benutzer kommt
    


  • Die erste Zeile heißt nicht, dass der Puffer geleert wird, sondern das sämtliche Fehlzustände in denen ein Stream sein kann gelöscht werden damit die Eingabe keinesfalls verhindert wird.

    Die zweite Zeile "leert" nun den Puffer - besser gesagt, sie ignoriert genauso viele Zeichen im Puffer wie im Puffer vorhanden sind.

    MfG SideWinder


Anmelden zum Antworten