You have to open the file in "binary" mode to write binary data, otherwise it is in text mode by default. Doesn't matter what the extension is - txt or dat or anything else - what matters is how you are opening the file in fstream::open.
Hope that helps. On Thu, Oct 25, 2012 at 2:01 PM, Zing Yu <[email protected]> wrote: > All, > > Just for future reference, below is the summary of what I did: > > In my .cc file: > > Added these lines at the top: > using namespace std; > #include <fstream> > #include <iostream> > > std::ofstream myfileobj; > > Added this line into my constructor definition: > myfileobj.open("/home/temp-values.txt"); > > Added this line into my work function: > myfileobj << temp << std::endl; // temp is a float variable > > Finally, added this line into my destructor definition: > myfileobj.close(); > > > Now, the only issue I am having is that if I save my file as .dat and then > use read_float_binary to read the values then it gives me garbage values > instead of actual ones. Moreover, the file size is larger than expected, > i.e., number of items is more than expected, and the item size is 8 bytes > instead of 4 bytes (for float). > > Nevertheless, I can live with using the .txt file for now and will work on > using .dat later. Meanwhile, if someone finds some obvious mistake in my > approach, please let me know. > > Thanks Sumit and Jose. > > ------------------------------ > *From:* Jose Torres Diaz <[email protected]> > *To:* sumitstop <[email protected]>; [email protected] > *Cc:* [email protected] > *Sent:* Tuesday, October 23, 2012 7:01 PM > > *Subject:* Re: [Discuss-gnuradio] saving internal (to a block) variable > values to a file > > Hi, > > Also I'm saving some variables into a file. What I did: > > Before the work function: > > myfile.open ("/home/Desktop/examples/variables_from_block"); > > Then, inside the work function: > > myfile << _msg.key; //Save the variable value > myfile << std::flush; > > I've found that I have to std::flush the file, because if I close it > (myfile.close()), I cannot access the file anymore and the variable is > saved once only. > > Hope this helps, > > Cheers, > > Jose > > On Wed, Oct 24, 2012 at 7:37 AM, sumitstop < > [email protected]> wrote: > > Well I am pretty sure that your query is more complicated than what I am > thinking, but I did the following just to check. Inside the work function > of > howto_square_ff.cc > > I pasted following lines > > ofstream outdata; > int i; // loop index > int num[5] = {4, 3, 6, 7, 12}; // list of output values > outdata.open("/home/sumit/example2.dat"); > for (i=0; i<5; ++i) > outdata << num[i] << std::endl; > outdata.close(); > > compiled it ... > > And I got them written in example2.dat > > Anyways I am curious to see if you get some effective reply :) > > > > > > -- > View this message in context: > http://gnuradio.4.n7.nabble.com/saving-internal-to-a-block-variable-values-to-a-file-tp38118p38125.html > Sent from the GnuRadio mailing list archive at Nabble.com. > > _______________________________________________ > Discuss-gnuradio mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > > > > > > > > _______________________________________________ > Discuss-gnuradio mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > >
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
