At this line: //itoa( (atof(CString) + copystring.converttofloat()), CString, 10 );Code:const oofloat & oofloat::operator += (const oofloat & str) { oofloat copystring(str); // copy to avoid aliasing problems oofloat size = (atof(CString) + str.converttofloat()); size = size.length(); int newLength = size.converttofloat(); // size of totaled number int lastLocation = length(); // index of '\0' // check to see if local buffer not big enough if (newLength >= Capacity) { Capacity = newLength + 1; char * newBuffer = new char[Capacity]; strcpy(newBuffer,CString); // copy into new buffer delete [] CString; // delete old string CString = newBuffer; } // now add str (copystring) to the integer value of CString //itoa( (atof(CString) + copystring.converttofloat()), CString, 10 ); sprintf ( CString, "%f", (atof(CString) + copystring.converttofloat()) ); return *this; }
That is what I was doing when I was doing a class similar to this, only with an integer. Now, I can't use "ftoa" because it doesn't exist, and the other functions I could find don't do what I want. However, another code sample someone gave me (used in my integer class) used sprintf. I tried to use it in
sprintf ( CString, "%f", (atof(CString) + copystring.converttofloat
()) );
so that I could store the double as a string. That works, but it gives me a memory violation. And on the other parts of the program; I have code like this:
I need a replacement for sprintf there, too.Code:const oofloat & oofloat::operator += ( double rhs ) { double hold = atof(CString) + rhs; char s[10]; sprintf ( s, "%f", hold ); return operator= ( s ); }
Thank you for the help!



LinkBack URL
About LinkBacks


