MFC String: How to convert a 'CString' to a 'char*'?
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2

Thread: MFC String: How to convert a 'CString' to a 'char*'?

Hybrid View

  1. #1
    Join Date
    Jun 2001
    Location
    Switzerland
    Posts
    4,443

    Strings: How to convert a CString to a char*?

    Q: How to convert a 'CString' to a 'char*'?

    A: You will need this mostly to pass a 'CString' to a function that expects a 'char*'.

    Code:
    // Prototype of a function expecting a char*
    void func(char* c);
    
    CString csMyString = "Hello World";
    
    // now call func()
    char* str = csMyString.GetBuffer(csMyString.GetLength());
    func(str);
    
    // or directly
    func(csMyString.GetBuffer(csMyString.GetLength()));
    
    // if 'func()' modifies the passed char*, you must call
    csMyString.ReleaseBuffer(-1);
    Note:
    • 'CString::GetBuffer()' will return a 'char*' only in non-UNICODE builds.

    • 'CString' has an implicit operator to 'LPCTSTR'. In non-UNICODE builds, that is a 'const char*'. Do not use a cast hack like this:

      Code:
      func((char*)((LPCSTR) csMyString));   // BAD!!!!
    • Do not call any other 'CString' member function on 'csMyString' between 'GetBuffer()' and 'ReleaseBuffer()'.



    Last edited by Andreas Masur; July 24th, 2005 at 11:54 AM.

  2. #2
    Join Date
    Oct 2002
    Location
    Germany
    Posts
    6,205

    Re: MFC String: How to convert a 'CString' to a 'char*'?

    Starting VC++ 7.x, CString can be easily converted to a char* (or equivalent) for all possible build scenarios using conversion class CT2CA.

    Like this -
    Code:
      CString csMyString = "Hello World";
      CT2CA pszCharacterString (csMyString);
    
      // Use pszCharacterString as a const char* or use it to copy into one
    ...Alternatively, using class CStringA -

    Code:
      CStringA pszCharacterString (csMyString);
    
      // Use pszCharacterString as a char* or use it to copy into one
    Last edited by Siddhartha; August 21st, 2006 at 06:26 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This is a CodeGuru survey question.


Featured


HTML5 Development Center