seekg - Frage



  • Den Schnipsel hier hab ich aus nem Tutorial:

    inOutFile.seekg(static_cast<streamoff>(0),ios::beg);
    

    Das 1. Argument gibt doch gibt die Anzahl der Bytes an, um die der Dateizeiger von der Position ios::beg bzw. ios::end bzw. ios::cur bewegt werden soll?
    Doch was genau soll dass mit dem "static_cast" und was ist "streamoff"?
    "(0)" steht ja wohl für 0 Bytes schätz ich mal?

    MfG
    Stromberg



  • streamoff steht für Stream-Offset und ist ein Typ, der eine relative Position innerhalb eines Streams angibt.



  • Und was soll der static_cast?



  • Stromberg schrieb:

    Und was soll der static_cast?

    Weil das, was dahinter steckt implementationsabhängig ist und alles mögliche sein kann.



  • Stromberg schrieb:

    Und was soll der static_cast?

    Die 0 in ein streamoff casten 😉

    ... Spaß bei seite ...

    Wahrscheinlich ist streamoff ein ganzzahliger typ also int,
    je nach implementierung evtl. auch unsigned (vermutlich) und ziemlich sicher
    einfach als solcher über einen typedef eingebunden.

    Das static_cast hier sagt lediglich explizit ... diese 0 ist ein streamoff.
    Ich würde mal sagen ... das ginge auch ohne ... aber es ist eben eindeutiger.
    Da sich dadurch der sinn der 0 ohne weitere dokumentation aus dem Code lesen
    lässt.

    Sollte ich mich hier irren möge man mich bitte korrigieren ... aber ...
    für mich sieht das hier schlicht nach einer Stilfrage aus.



  • dark-eye schrieb:

    Stromberg schrieb:

    Und was soll der static_cast?

    Die 0 in ein streamoff casten 😉

    ... Spaß bei seite ...

    Wahrscheinlich ist streamoff ein ganzzahliger typ also int,
    je nach implementierung evtl. auch unsigned (vermutlich) und ziemlich sicher
    einfach als solcher über einen typedef eingebunden.

    Das static_cast hier sagt lediglich explizit ... diese 0 ist ein streamoff.
    Ich würde mal sagen ... das ginge auch ohne ... aber es ist eben eindeutiger.
    Da sich dadurch der sinn der 0 ohne weitere dokumentation aus dem Code lesen
    lässt.

    Sollte ich mich hier irren möge man mich bitte korrigieren ... aber ...
    für mich sieht das hier schlicht nach einer Stilfrage aus.

    Unsigned macht wenig sinn, da man sich, relativ zur aktuellen Position, auch rückwärts durch den Stream bewegen kann.
    streamoff kann alles mögliche sein, muss allerdings die Anforderung erfüllen, dass man es ohne Informationsverlusst in streamsize überführen kann und umgekehrt.



  • Wieder was gelernt 🙂


Anmelden zum Antworten