A simple routine to allow CString formatted strings to be used wherever a regular LPCSTR would be used, without needing to define a CString (ie, dynamically created and formatted LPCSTR strings)
Environment: VC6 SP4
Well, I’ve seen other people asking for a class like this, and I sure wanted one, so I finally wrote one.
Suppose you want to call a routine with a dynamically constructed LPCSTR. You would call it like this:
SampleRoutine( (LPCSTR) csFMT( "Sample dynamic string count(%d) name(%s)", nAnInteger, szAZeroTerminatedString));
The Microsoft CString class provides a Format member routine which
provides sprintf-type formatting, without the need to allocate a buffer.
The class CString automatically calculates the size of the buffer required,
and allocates it. A CString variable, however, must first be declared. This routine allows the CString Format member routine to be used, without needing to declare
Here is the sample code without using the “csFmt” routine:
CString csTemp; CsTemp.Format("Sample dynamic string count(%d) name(%s)", nAnInteger, szAZeroTerminatedString); SampleRoutine((LPCSTR) csTemp);
This method doesn’t require any subclassing, and is only a short < 10 line routine.
CString csFMT(LPCSTR lpszFormat, …)
You can cut & paste code from above.