conliffe@caen.engin.umich.edu (Darryl C. Conliffe) (03/06/91)
(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 <stdio.h> 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 -------------------