Kenneth G. Cavness wrote: > >Hello All: > > > >In the source code, I know that there are lines similar to: > > > > sprintf(buf, "Running game on port %d.", port); > > log(buf); > > > >I do understand that the purpose of this is to build a string in buf, > and > >then send it to the log function. I'm currently working on porting > the > >code to C++, and was wondering if anyone new of the corresponding C++ > > >equivalent to writing a stream to a buffer. With the normal cout and > cerr > >commands, the string is written out to screen immediately, instead of > being > >stored in a buffer. > > Actually, it's just a string literal. Write yourself a string class, > or use one of the ones provided all over the world. Then set your > logging class or method to accept a string as a parameter. That's > all the "buf" is -- a character array. > Actually I dont think that's what he wanted. I think he wants to encapsulate the loging mechanisms into an object. It could be done, pretty easily. Check this out: class Log { public: Log(void) { /* insert object initialization code here*/ } Log& operator << (const char *); // In C++, you _should_ use a string class here instead...(const String &) }; Log& Log::operator << (const char *aLogmsg) { log(aLogmsg); // This will log the string return *this; // This will return the 'current' object as a reference (notice the & at the return type) // this allows stacking of << operators. Log logObjM logObj << "1st msg to Log" << "2nd msg to Log" } Now the log-function has been encapsulated, and been given a LOT easier interface. Of course you should add some more operarors for integers, floats, bools and whatever so that Log can output the correctly. I hope that was the kind of answer you were looking for. // Jorgen +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST