Problem mit fstream in einer forschleife



  • Hallo Leute,

    ich habe habe ein Problem damit die Werte richtig aus einem Buffer rauszukopieren.

    Ich hatte einen Beispielcode der funktioniert:

    tFloat64 m_f64Value1;
    tFloat64 m_f64Value2;
    tFloat64 m_f64Value3;
    fstream	outputStream;
    
    pMediaSample->CopyBufferTo(&m_f64Value1, sizeof(m_f64Value1),(tInt) 0);
    pMediaSample->CopyBufferTo(&m_f64Value2, sizeof(m_f64Value2),(tInt) 8);
    pMediaSample->CopyBufferTo(&m_f64Value3, sizeof(m_f64Value3),(tInt) 16);
    
    outputStream <<  m_f64Value1<< ";"<<  m_f64Value2<< ";"<<  m_f64Value3<< ";";
    

    Ausgehend von diesem Code wollte ich einfach eine for-scheife drumrum bauen.
    im wesentlichen sieht die For-schleife so aus:

    tFloat64 temp;
    tInt pos = 0;
    fstream	outputStream;
    
    for ( int x =0 ; x < GetItemCount(); x++){ // getItemCount zählt wie viele werte im buffer eingetragen sind.
    
      pMediaSample->CopyBufferTo( &temp , sizeof(temp), pos);
      outputStream <<  temp << ";";
    
      pos = pos + 8;
    
    }
    

    Jetzt kommen aber bei der For-schleife die gleichen werte raus.
    also wenn das richtige ergebniss so lautet
    0.42;0.13;0.2
    dann kommt in der For-schleife folgendes raus:
    0.42;0.42;0.42

    Ich habe seit 2 jahren nichts mehr mit c++ gemacht, deswegen ist dass für mich absolut unverständlich.
    ich Schätze das das irgendwie mit dem fstream zusammenhängt,aber ich habe keine lösung gefunden.

    Wäre super wenn mir jemand einen tipp geben kann was da abgeht.



  • So auf die schnelle sehe ich nichts. Aber versuchs mal mit dem Debugger, indem du einfach einen Haltepunkt setzt und dann Schritt für Schritt durchgehts.
    Ansonsten sehe ich nur, dass du in der Schleife nicht castest.



  • Was sagt folgendes:

    tInt pos = 0;
    fstream    outputStream;
    
    for ( int x =0 ; x < GetItemCount(); x++){ // getItemCount zählt wie viele werte im buffer eingetragen sind.
    
    tFloat64 temp;
    
      pMediaSample->CopyBufferTo( &temp , sizeof(temp), pos);
      outputStream <<  temp << ";";
    
      pos = pos + 8;
    
    }
    

Anmelden zum Antworten