How to convert a CString variable to char* or LPTSTR?
Answers were Sorted based on User's Feedback
Answer / jones
there are two ways
I) Use CString::GetBuffer(). It can be used in a manner
similar to this:
// prototype of a function that takes a LPTSTR parameter
// presented for argument's sake.
void test_func ( LPTSTR lpszString, int length );
CString string;
test_func ( string.GetBuffer ( 50 ), 50 );
string.ReleaseBuffer ( );
Forgetting to call CString::ReleaseBuffer() can cause
problems very difficult to debug as it releases the lock on
CString's inner buffer.
One thing to keep in mind about CString::GetBuffer() is
that it returns a TCHAR* value (or LPTSTR, it's the same),
so it is subject to the same ANSI/MBCS Vs. UNICODE
convertions as most other Win32 APIs. It also means that if
you're compiling a unicode version of your application, and
specifically need a char* from your CString instance,
you'll have to use a separate buffer of the appropriate
type, and then make the convertion to unicode using one of
the available API's before asigning it's value to the
CString instance. The same goes if you're doing the exact
opposite: getting a WCHAR* out of a CString, while
compiling in MBCS mode.
ii) Use a temporary variable. For example:
char temp[256];
CString string;
test_func ( temp, 256 );
string = temp;
| Is This Answer Correct ? | 7 Yes | 1 No |
Answer / prajeesh prabhakar
char* pString = reinterpret_cast<LPSTR>(
csString.GetBuffer( csString.GetLength()));
csString.ReleaseBuffer();
| Is This Answer Correct ? | 1 Yes | 0 No |
Answer / ratnesh sachan
We can convert a CString variable to char* or LPTSTR by
using the GetBuffer.
Example
// example for CString::GetBuffer
CString s( "abcd" );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
char *pStr;
pStr = s.GetBuffer( 10 );
strcpy( pStr, "Hello" ); // directly access CString buffer
s.ReleaseBuffer( );
#ifdef _DEBUG
afxDump << "CString s " << s << "\n";
#endif
| Is This Answer Correct ? | 3 Yes | 3 No |
Answer / billy howell
Use the _stprintf_s function. It's much simpler.
| Is This Answer Correct ? | 1 Yes | 1 No |
Hi All, I have created one MFC Dialog Based application.now if i am running the application its working fine,instead of closing he application i minimized the application,if i run the application again,i am getting the Dialog. I want to prevent the calling of application multiple times. please give me the code and let me know in which method i need to make changes. Praveer
1)How to change the size of a button at run time ?
What is the difference between the Encapsulation and Abstraction
25 Answers HCL, Invensys, TCS, Wipro,
Explain in sort What is CTargetObject?
1)How to create ToolTip in MFC?
Hi All, i am new for VC++ SDK. i want to get the IP Address of all the External device connected with my local machine.please give the code Regards, Praveer
How do I create a dialog box in mfc?
General purpose classes in MFC
How we call a dialog in another dialog?
WHAT IS DIFFERENT BETWEN RELEASE MODE & DEBUGGING MODE
4 Answers Google, Microsoft, TCS,
What is CArchive class dowes?
what is the use of CCmdTarget?