C++: convert LPTSTR to char array

c, c++, lptstr, visual-studio

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*

Problem

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.

Original source

Related problems