C++ LPCTSTR to char*

本小妞迷上赌 提交于 2019-12-02 09:18:55
Roman R.

In MFC the easiest is to convert through CStringA (provided that resulting buffer will be a read-only argument):

LPCTSTR pszA = ...
CStringA sB(pszA);
const char* pszC = sB;
char* pszD = const_cast<char*>(pszC);

Other options are available and were discussed:

LPCTSTR is either defined as a const wchar_t * or a const char * depending on whether your project defined the preprocessor symbol UNICODE (or _UNICODE, I forget which one MFC uses).

So the solution to your problem depends on whether you're using the UNICODE setting or not.

If you are using it, you'll need to convert the string to a narrow string. Use CStringA to do this.

If you're not using UNICODE you'll need to make a copy that is mutable and pass it to the DLL, in case it wants to modify the string. You can do this by creating a copy using CString.

In either case, once you have a copy in a CString object then use the GetBuffer method to get a mutable pointer to the string, call the DLL function and then call ReleaseBuffer after the call.

LPCTSTR patientName= L"";
CStringA sB(patientName);
const char* pszC = sB; 

DcmFileFormat fileformat;
//Type casting below to const char * str
OFCondition status = fileformat.loadFile(((LPCSTR)(CStringA)str));
if (status.good())
{
    if (fileformat.getDataset()->findAndGetString(DCM_PatientName, pszC).good())             
    {
        //Type casting from const char * to LPCTSTR
        m_List.InsertColumn(4, LPCTSTR(pszC) , LVCFMT_LEFT, 100); 
    }
 }

This was the way i used to typecast the variables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!