Search code examples
c++cvisual-studiolptstr

C++: convert LPTSTR to char array


Possible Duplicate:
Convert lptstr to char*

I need to convert an LPTSTR p to CHAR ch[]. I am new to C++.

#include "stdafx.h"
#define _WIN32_IE 0x500
#include <shlobj.h>
#include <atlstr.h>
#include <iostream>
#include <Strsafe.h>

using namespace std;

int main(){
    int a;
    string res;
    CString path;
    char ch[MAX_PATH];
    LPTSTR p = path.GetBuffer(MAX_PATH);
    HRESULT hr = SHGetFolderPath(NULL,CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, p);

/* some operation with P and CH */

    if(SUCCEEDED(hr))
    { /* succeeded */
        cout << ch;
    } /* succeeded */
    else
    { /* failed */
        cout << "error";
    } /* failed */
    cin >> a;
    return 0;
}

Thanks in advance.


Solution

  • LPTSTR is a (non-const) TCHAR string. Depends if it is Unicode or not it appears. LPTSTR is char* if not Unicode, or w_char* if so.

    If you are using non-Unicode strings LPTSTR is just a char*, otherwise do:

    size_t size = wcstombs(NULL, p, 0);
    char* CharStr = new char[size + 1];
    wcstombs( CharStr, p, size + 1 );
    

    Also, this link can help:

    Convert lptstr to char*