Re: Proper use of code
On Feb 4, 6:40 am, joshturner1967 <joshturner1...@gmail.com> wrote:
On Feb 3, 1:10 am, joshturner1967 <joshturner1...@gmail.com> wrote:
I gather I can do the following
[code snipped]
First off does this look better or am I off track. If I am off track
could you tell me where and show me what I should be doing?
Definitely on track. You may want to look at the following code which
is a solution to your problem (as I understand it) using fairly
idiomatic C++:
#include <string>
#include <iostream>
#include <sstream>
#include <cstdlib>
using namespace std;
// handy function to turn any streamable type into a string
template <typename T> string ToString( const T & t ) {
ostringstream os;
os << t;
return os.str();
}
// build filename from base, random number and mimetype extension
string MakeFileName( const string & base, const string & mime ) {
string filename = base; // always try to initialse
// find the position of the last slash & extract type
// if there isn't one, use whole mime type
string::size_type pos = mime.find_last_of( "/" );
string ext = pos == string::npos ? mime : mime.substr( pos +
1 );
// get string rep of a random number
string rnum = ToString( rand() );
// build the rest of the filename
// note we can use += as well as append()
filename += rnum;
filename += ".";
filename += ext;
return filename;
}
// test it
int main() {
cout << MakeFileName( "myfile", "text/xml" ) << endl;
return 0;
}
Note that in in te above thre are no fixed sized buffers and no
possibilities of buffer overruns.
Secondly I would like to be able to update filename as well char
**filename from qfilename but using this new method I am confussed and
I dont want to switch between c and c++ and want to learn it
correctly.
Assuming filename points to something, and assuming you are using
malloc/free in the rest of the code then:
// uncompiled & untested
string f = MakeFileName( "myfile", "text/xml" );
* filename = malloc( sizeof(char) * f.size() + 1 );
strcpy( * filename, f.c_str() );
The string member function c_str() gives you a C-style null-terminated
string.
Neil Butterworth
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]