Path: utzoo!news-server.csri.toronto.edu!cs.utexas.edu!asuvax!ncar!elroy.jpl.nasa.gov!sdd.hp.com!caen!comfrey.engin.umich.edu!conliffe From: conliffe@caen.engin.umich.edu (Darryl C. Conliffe) Newsgroups: comp.lang.c++ Subject: Some coding questions Message-ID: <1991Mar5.191705.1616@engin.umich.edu> Date: 5 Mar 91 19:17:05 GMT Sender: news@engin.umich.edu (CAEN Netnews) Organization: The University of Michigan, Ann Arbor Lines: 53 (1) I use the following routine to build a string from an integer. Is it correct to say that what is returned is the pointer to a memory area that is out of scope, and thus is unavailable? If so, why does it work? If not, when, if ever, does the ostrstream buffer get reclaimed? char *itoa (int i) { // converts integer to char * that will ostrstream it; // work in & string ops it << i << ends; char *bp = it.str(); return bp; } (2) Another question: I have seen constructs like the above using and a sprintf call. Any opinions on that? (3) I also use the tactic on a NIHCL Time object to get the print image into a char* for ultimate inclusion in a String. Any comments here? char *ttoa (const Time& time) { ostrstream time_str; time_str << time << ends; char *bp = time_str.str(); return bp; } (4) These fragments work, but do they represent at least one of the better ways of getting there? Thanks. (5) As a final note (bait?), while NIHCL's String yields the internal char* when passed as a const char* argument, many of the prototypes I use are char*, not const char*. I use this function to get the convenience of an expression such as String command("/bin/date"); system ( cptr(command) ); Is there a better way? char *cptr(const char* s) { char *bp = (char *)s; return bp; } ___________________ Darryl C. Conliffe conliffe@caen.engin.umich.edu (313) 721-6069 ------------------- -- ___________________ Darryl C. Conliffe conliffe@caen.engin.umich.edu (313) 721-6069 -------------------