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.



  • Du weisst, was ein Debugger ist, ja?
    Ich sehe keinen Fehler in der Anwendung von fstream in deinem Beispiel. Wie gesagt, debugge die Sache oder lass dir temp vor jedem Schreibvorgang ausgeben.



  • Es ist nicht so beliebt, wenn man 2 mal den gleichen Thread aufmacht!


Log in to reply