Puffer leeren?



  • hi

    wozu leert man eigentlich den Puffer?
    ist das sowas wie nen zbsp. Ladebalken, wenn man einen befehl nach dem anderem benutzt und der Ladebalken voll ist,dass er dann geleert werden muss, sonst kommt ein überlauf?

    Stimmt das so?

    Und wie leert man den Puff in C++?

    Mfg



  • welchen puffer?



  • ausgabepuffer oder so, was gibts da überhaupt?

    ich kenne nur

    std::cout<<":::::::::::::::::::"<<std::endl; //Leert den Ausgabebuffer und mach ne neue Zeile
    

    gibts auch bei spieleprogrammierung sowas wie ausgabepuffer,den man leeren muss?
    Wwnn ja,wie geht das?



  • michael95 schrieb:

    gibts auch bei spieleprogrammierung sowas wie ausgabepuffer,den man leeren muss?

    es gibt verschiedene arten von puffern, meistens arbeiten sie nach diesem prinzip: http://en.wikipedia.org/wiki/FIFO
    solche puffer werden z.b. oft verwendet, um zeitliche abhängigkeiten zu minimieren. ein schneller 'producer' kann z.b. an einen langsamen 'consumer' mit voller geschwindigkeit daten senden, bis der dazwischengeschaltete puffer voll ist. erst dann macht sich die langsamkeit des empfängers bemerkbar.
    leeren kann man so'nen puffer auf 2 arten: 'flush' - der sender wartet, bis der empfänger alles bekommen hat, oder löschen, d.h. der pufferinhalt wird einfach weggeworfen und der empfänger bekommt nichts.



  • Der Puffer wird NICHT geleert mit

    cout << "::::::::::::::::" << endl;
    

    Man kann den Puffer 'flush'en und die Statusbits löschen. Das ist manchmal notwendig, vor allem wenn man Leereingaben erlaubt ist das sinnvoll weil dann aus dem Puffer gelesen wird.

    Das Puffern ist eine Eigenschaft der Betriebssysteme.
    Suche mal nach sync, clear und flush.



  • heinzkleinz schrieb:

    Der Puffer wird NICHT geleert mit

    cout << "::::::::::::::::" << endl;
    

    Doch, endl gibt "\n" aus und flusht.



  • im ernst?
    der puffer wird geleert mit std::cout<<":"<<std::endl;

    warum das denn? oder ist das mit absicht so gemacht?
    sachen gibts.



  • erstaunter schrieb:

    im ernst?
    der puffer wird geleert mit std::cout<<":"<<std::endl;

    warum das denn? oder ist das mit absicht so gemacht?
    sachen gibts.

    Soweit ich weiß steht es so im Standard... und wenn man nur eine neue Zeile will, gibt es ja immernoch einfach "\n"^^



  • erstaunter schrieb:

    im ernst?
    der puffer wird geleert mit std::cout<<":"<<std::endl;...

    Das liegt nur am "std::endl", der Rest spielt dabei keine Rolle.
    "endl ist identisch mit '\n' + flush()" steht (frei übertragen) im Standard.

    <<":"<<std::endl ist also nicht irgendein "magic token".... 😉

    Gruß,

    Simon2.


Anmelden zum Antworten